{
 "metadata": {
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5-final"
  },
  "orig_nbformat": 2,
  "kernelspec": {
   "name": "python38364bitpy38conda80a8f432976e4e99926307fddceb6e0b",
   "display_name": "Python 3.8.3 64-bit ('py38': conda)",
   "language": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2,
 "cells": [
  {
   "source": [
    "# Quick Demo (Notebook version)\n",
    "\n",
    "(I hate notebooks.)\n",
    "\n",
    "In this demo, we will create a simple method and apply it to various Continual Learning settings.\n",
    "\n",
    "For the purposes of this demo, we will restrict ourselves to classification problems on the mnist and fashion-mnist datasets."
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Imports:\n",
    "import sys\n",
    "from dataclasses import dataclass\n",
    "from typing import Dict, Optional, Tuple, Type\n",
    "\n",
    "import gym\n",
    "import torch\n",
    "from gym import spaces\n",
    "from torch import Tensor, nn\n",
    "from simple_parsing import ArgumentParser\n",
    "\n",
    "sys.path.extend([\".\", \"..\"])\n",
    "from sequoia.settings import Method, Setting\n",
    "from sequoia.settings.passive.cl import ClassIncrementalSetting, DomainIncrementalSetting\n",
    "from sequoia.settings.passive.cl.objects import (\n",
    "    Actions,\n",
    "    Environment,\n",
    "    Observations,\n",
    "    PassiveEnvironment,\n",
    "    Results,\n",
    "    Rewards,\n",
    ")"
   ]
  },
  {
   "source": [
    "# Basic Model:"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "class MyModel(nn.Module):\n",
    "    \"\"\" Simple classification model without any CL-related mechanism.\n",
    "\n",
    "    To keep things simple, this demo model is designed for supervised\n",
    "    (classification) settings where observations have shape [3, 28, 28] (ie the\n",
    "    MNIST variants: Mnist, FashionMnist, RotatedMnist, EMnist, etc.)\n",
    "    \"\"\"\n",
    "    def __init__(self,\n",
    "                 observation_space: gym.Space,\n",
    "                 action_space: gym.Space,\n",
    "                 reward_space: gym.Space):\n",
    "        super().__init__()\n",
    "        image_shape = observation_space[0].shape\n",
    "        assert image_shape == (3, 28, 28)\n",
    "        assert isinstance(action_space, spaces.Discrete)\n",
    "        assert action_space == reward_space\n",
    "        n_classes = action_space.n\n",
    "        image_channels = image_shape[0]\n",
    "\n",
    "        self.encoder = nn.Sequential(\n",
    "            nn.Conv2d(image_channels, 6, 5),\n",
    "            nn.ReLU(),\n",
    "            nn.MaxPool2d(2),\n",
    "            nn.Conv2d(6, 16, 5),\n",
    "            nn.ReLU(),\n",
    "            nn.MaxPool2d(2),\n",
    "        )\n",
    "        self.classifier = nn.Sequential(\n",
    "            nn.Flatten(),\n",
    "            nn.Linear(256, 120),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(120, 84),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(84, n_classes),\n",
    "        )\n",
    "        self.loss = nn.CrossEntropyLoss()\n",
    "\n",
    "    def forward(self, observations: Observations) -> Tensor:\n",
    "        # NOTE: here we don't make use of the task labels.\n",
    "        x = observations.x\n",
    "        task_labels = observations.task_labels\n",
    "        features = self.encoder(x)\n",
    "        logits = self.classifier(features)\n",
    "        return logits\n",
    "\n",
    "    def shared_step(\n",
    "        self, batch: Tuple[Observations, Optional[Rewards]], environment: Environment\n",
    "    ) -> Tuple[Tensor, Dict]:\n",
    "        \"\"\"Shared step used for both training and validation.\n",
    "                \n",
    "        Parameters\n",
    "        ----------\n",
    "        batch : Tuple[Observations, Optional[Rewards]]\n",
    "            Batch containing Observations, and optional Rewards. When the Rewards are\n",
    "            None, it means that we'll need to provide the Environment with actions\n",
    "            before we can get the Rewards (e.g. image labels) back.\n",
    "            \n",
    "            This happens for example when being applied in a Setting which cares about\n",
    "            sample efficiency or training performance, for example.\n",
    "            \n",
    "        environment : Environment\n",
    "            The environment we're currently interacting with. Used to provide the\n",
    "            rewards when they aren't already part of the batch (as mentioned above).\n",
    "\n",
    "        Returns\n",
    "        -------\n",
    "        Tuple[Tensor, Dict]\n",
    "            The Loss tensor, and a dict of metrics to be logged.\n",
    "        \"\"\"\n",
    "        # Since we're training on a Passive environment, we will get both observations\n",
    "        # and rewards, unless we're being evaluated based on our training performance,\n",
    "        # in which case we will need to send actions to the environments before we can\n",
    "        # get the corresponding rewards (image labels).\n",
    "        observations: Observations = batch[0]\n",
    "        rewards: Optional[Rewards] = batch[1]\n",
    "        # Get the predictions:\n",
    "        logits = self(observations)\n",
    "        y_pred = logits.argmax(-1)\n",
    "\n",
    "        if rewards is None:\n",
    "            # If the rewards in the batch is None, it means we're expected to give\n",
    "            # actions before we can get rewards back from the environment.\n",
    "            rewards = environment.send(Actions(y_pred))\n",
    "\n",
    "        assert rewards is not None\n",
    "        image_labels = rewards.y\n",
    "\n",
    "        loss = self.loss(logits, image_labels)\n",
    "\n",
    "        accuracy = (y_pred == image_labels).sum().float() / len(image_labels)\n",
    "        metrics_dict = {\"accuracy\": accuracy.item()}\n",
    "        return loss, metrics_dict\n"
   ]
  },
  {
   "source": [
    "## Creating our Method\n",
    "\n",
    "Here by subclassing 'MethodABC' and passing in a target_setting, we indicate that we are creating a new method, and that it will work on any Setting that is an instance of ClassIncrementalSetting or one of its subclasses. "
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "class DemoMethod(Method, target_setting=ClassIncrementalSetting):\n",
    "    \"\"\" Minimal example of a Method targetting the Class-Incremental CL setting.\n",
    "    \n",
    "    For a quick intro to dataclasses, see examples/dataclasses_example.py    \n",
    "    \"\"\"\n",
    "\n",
    "    @dataclass\n",
    "    class HParams:\n",
    "        \"\"\" Hyper-parameters of the demo model. \"\"\"\n",
    "        # Learning rate of the optimizer.\n",
    "        learning_rate: float = 0.001\n",
    "    \n",
    "    def __init__(self, hparams: HParams):\n",
    "        self.hparams: DemoMethod.HParams = hparams\n",
    "        self.max_epochs: int = 1\n",
    "        self.early_stop_patience: int = 2\n",
    "\n",
    "        # We will create those when `configure` will be called, before training.\n",
    "        self.model: MyModel\n",
    "        self.optimizer: torch.optim.Optimizer\n",
    "\n",
    "    def configure(self, setting: ClassIncrementalSetting):\n",
    "        \"\"\" Called before the method is applied on a setting (before training). \n",
    "\n",
    "        You can use this to instantiate your model, for instance, since this is\n",
    "        where you get access to the observation & action spaces.\n",
    "        \"\"\"\n",
    "        self.model = MyModel(\n",
    "            observation_space=setting.observation_space,\n",
    "            action_space=setting.action_space,\n",
    "            reward_space=setting.reward_space,\n",
    "        )\n",
    "        self.optimizer = torch.optim.Adam(self.model.parameters(), lr=self.hparams.learning_rate)\n",
    "\n",
    "    def fit(self, train_env: PassiveEnvironment, valid_env: PassiveEnvironment):\n",
    "        # configure() will have been called by the setting before we get here.\n",
    "        import tqdm\n",
    "        from numpy import inf\n",
    "        best_val_loss = inf\n",
    "        best_epoch = 0\n",
    "        for epoch in range(self.max_epochs):\n",
    "            self.model.train()\n",
    "            # Training loop:\n",
    "            with tqdm.tqdm(train_env) as train_pbar:\n",
    "                train_pbar.set_description(f\"Training Epoch {epoch}\")\n",
    "                for i, batch in enumerate(train_pbar):\n",
    "                    loss, metrics_dict = self.model.shared_step(batch, environment=train_env)\n",
    "                    self.optimizer.zero_grad()\n",
    "                    loss.backward()\n",
    "                    self.optimizer.step()\n",
    "                    train_pbar.set_postfix(**metrics_dict)\n",
    "\n",
    "            # Validation loop:\n",
    "            self.model.eval()\n",
    "            torch.set_grad_enabled(False)\n",
    "            with tqdm.tqdm(valid_env) as val_pbar:\n",
    "                val_pbar.set_description(f\"Validation Epoch {epoch}\")\n",
    "                epoch_val_loss = 0.\n",
    "\n",
    "                for i, batch in enumerate(val_pbar):\n",
    "                    batch_val_loss, metrics_dict = self.model.shared_step(batch, environment=valid_env)\n",
    "                    epoch_val_loss += batch_val_loss\n",
    "                    val_pbar.set_postfix(**metrics_dict, val_loss=epoch_val_loss)\n",
    "            torch.set_grad_enabled(True)\n",
    "\n",
    "            if epoch_val_loss < best_val_loss:\n",
    "                best_val_loss = valid_env\n",
    "                best_epoch = epoch\n",
    "            if epoch - best_epoch > self.early_stop_patience:\n",
    "                print(f\"Early stopping at epoch {i}.\")\n",
    "                break\n",
    "\n",
    "    def get_actions(self, observations: Observations, action_space: gym.Space) -> Actions:\n",
    "        \"\"\" Get a batch of predictions (aka actions) for these observations. \"\"\" \n",
    "        with torch.no_grad():\n",
    "            logits = self.model(observations)\n",
    "        # Get the predicted classes\n",
    "        y_pred = logits.argmax(dim=-1)\n",
    "        return self.target_setting.Actions(y_pred)\n",
    "    \n",
    "    @classmethod\n",
    "    def add_argparse_args(cls, parser: ArgumentParser, dest: str = \"\"):\n",
    "        \"\"\"Adds command-line arguments for this Method to an argument parser.\"\"\"\n",
    "        parser.add_arguments(cls.HParams, \"hparams\")\n",
    "\n",
    "    @classmethod\n",
    "    def from_argparse_args(cls, args, dest: str = \"\"):\n",
    "        \"\"\"Creates an instance of this Method from the parsed arguments.\"\"\"\n",
    "        hparams: cls.HParams = args.hparams\n",
    "        return cls(hparams=hparams)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stderr",
     "text": [
      "2021-02-25:17:29:01,958 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:184] Starting training on task 0.\n",
      "2021-02-25:17:29:01,959 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:148] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:02,13 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/passive/cl/class_incremental_setting.py:433] Number of train tasks: 5.\n",
      "2021-02-25:17:29:02,14 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/passive/cl/class_incremental_setting.py:434] Number of test tasks: 5.\n",
      "Training Epoch 0: 100%|██████████| 300/300 [00:04<00:00, 64.17it/s, accuracy=1]\n",
      "Validation Epoch 0: 100%|██████████| 75/75 [00:00<00:00, 155.53it/s, accuracy=1, val_loss=tensor(3.1905)]\n",
      "2021-02-25:17:29:07,205 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:212] Finished Training on task 0.\n",
      "2021-02-25:17:29:07,246 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/passive/cl/class_incremental_setting.py:433] Number of train tasks: 5.\n",
      "2021-02-25:17:29:07,246 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/passive/cl/class_incremental_setting.py:434] Number of test tasks: 5.\n",
      "2021-02-25:17:29:07,274 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:347] Will query the method for actions at each step, since it doesn't implement a `test` method.\n",
      "Test:   0%|          | 0/312 [00:00<?, ?it/s]2021-02-25:17:29:07,361 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:07,365 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:07,373 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:07,382 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:07,394 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "Test: 100%|██████████| 312/312 [00:01<00:00, 232.18it/s]\n",
      "2021-02-25:17:29:08,713 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:217] Resulting objective of Test Loop: 0.626102\n",
      "2021-02-25:17:29:08,713 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:184] Starting training on task 1.\n",
      "2021-02-25:17:29:08,714 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:148] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "Training Epoch 0: 100%|██████████| 300/300 [00:03<00:00, 79.71it/s, accuracy=0.969]\n",
      "Validation Epoch 0: 100%|██████████| 75/75 [00:00<00:00, 170.55it/s, accuracy=0.969, val_loss=tensor(5.7692)]\n",
      "2021-02-25:17:29:12,923 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:212] Finished Training on task 1.\n",
      "2021-02-25:17:29:12,926 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:347] Will query the method for actions at each step, since it doesn't implement a `test` method.\n",
      "Test:   0%|          | 0/312 [00:00<?, ?it/s]2021-02-25:17:29:13,14 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:13,19 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:13,27 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:13,36 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:13,46 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "Test: 100%|██████████| 312/312 [00:01<00:00, 248.27it/s]\n",
      "2021-02-25:17:29:14,276 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:217] Resulting objective of Test Loop: 0.568409\n",
      "2021-02-25:17:29:14,277 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:184] Starting training on task 2.\n",
      "2021-02-25:17:29:14,278 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:148] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "Training Epoch 0: 100%|██████████| 300/300 [00:03<00:00, 86.51it/s, accuracy=1]\n",
      "Validation Epoch 0: 100%|██████████| 75/75 [00:00<00:00, 152.03it/s, accuracy=1, val_loss=tensor(0.0980)]\n",
      "2021-02-25:17:29:18,245 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:212] Finished Training on task 2.\n",
      "2021-02-25:17:29:18,249 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:347] Will query the method for actions at each step, since it doesn't implement a `test` method.\n",
      "Test:   0%|          | 0/312 [00:00<?, ?it/s]2021-02-25:17:29:18,339 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:18,343 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:18,356 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:18,362 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:18,371 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "Test: 100%|██████████| 312/312 [00:01<00:00, 243.46it/s]\n",
      "2021-02-25:17:29:19,632 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:217] Resulting objective of Test Loop: 0.757212\n",
      "2021-02-25:17:29:19,632 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:184] Starting training on task 3.\n",
      "2021-02-25:17:29:19,633 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:148] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "Training Epoch 0: 100%|██████████| 300/300 [00:03<00:00, 79.67it/s, accuracy=1]\n",
      "Validation Epoch 0: 100%|██████████| 75/75 [00:00<00:00, 140.42it/s, accuracy=1, val_loss=tensor(0.1427)]\n",
      "2021-02-25:17:29:23,940 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:212] Finished Training on task 3.\n",
      "2021-02-25:17:29:23,942 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:347] Will query the method for actions at each step, since it doesn't implement a `test` method.\n",
      "Test:   0%|          | 0/312 [00:00<?, ?it/s]2021-02-25:17:29:24,35 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:24,71 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:24,82 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:24,96 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:24,103 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "Test: 100%|██████████| 312/312 [00:01<00:00, 223.35it/s]\n",
      "2021-02-25:17:29:25,441 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:217] Resulting objective of Test Loop: 0.791366\n",
      "2021-02-25:17:29:25,441 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:184] Starting training on task 4.\n",
      "2021-02-25:17:29:25,442 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:148] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "Training Epoch 0: 100%|██████████| 300/300 [00:03<00:00, 81.25it/s, accuracy=0.969]\n",
      "Validation Epoch 0: 100%|██████████| 75/75 [00:00<00:00, 157.25it/s, accuracy=1, val_loss=tensor(0.7817)]\n",
      "2021-02-25:17:29:29,616 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:212] Finished Training on task 4.\n",
      "2021-02-25:17:29:29,619 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:347] Will query the method for actions at each step, since it doesn't implement a `test` method.\n",
      "Test:   0%|          | 0/312 [00:00<?, ?it/s]2021-02-25:17:29:29,706 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:29,710 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:29,719 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:29,727 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "2021-02-25:17:29:29,735 WARNING  [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:305] On a task boundary, but since your method doesn't have an `on_task_switch` method, it won't know about it! \n",
      "Test: 100%|██████████| 312/312 [00:01<00:00, 247.82it/s]\n",
      "2021-02-25:17:29:30,971 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:217] Resulting objective of Test Loop: 0.798978\n",
      "2021-02-25:17:29:30,971 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:237] Finished main loop in 30.118470110999997 seconds.\n",
      "2021-02-25:17:29:31,57 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:257] {\n",
      "\t\"Task 0\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.989919\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.666667\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.481351\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.494048\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.5\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 1\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.61744\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.96131\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.422379\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.360119\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.477823\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 2\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.506048\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.564484\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 1.0\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.996528\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.718246\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 3\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.498488\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.502976\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.996472\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 1.0\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.960181\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 4\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.537802\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.549603\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.918851\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.994048\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.995464\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Final/Average Online Performance\": 0,\n",
      "\t\"Final/Average Final Performance\": 0.798978,\n",
      "\t\"Final/Runtime (seconds)\": 30.118470110999997,\n",
      "\t\"Final/CL Score\": 0.6793868\n",
      "}\n",
      "\n",
      "2021-02-25:17:29:31,143 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/passive/cl/class_incremental_setting.py:395] {\n",
      "\t\"Task 0\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.989919\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.666667\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.481351\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.494048\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.5\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 1\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.61744\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.96131\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.422379\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.360119\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.477823\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 2\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.506048\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.564484\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 1.0\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.996528\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.718246\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 3\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.498488\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.502976\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.996472\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 1.0\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.960181\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 4\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.537802\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.549603\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.918851\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.994048\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.995464\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Final/Average Online Performance\": 0,\n",
      "\t\"Final/Average Final Performance\": 0.798978,\n",
      "\t\"Final/Runtime (seconds)\": 30.118470110999997,\n",
      "\t\"Final/CL Score\": 0.6793868\n",
      "}\n",
      "\n"
     ]
    }
   ],
   "source": [
    "method = DemoMethod(hparams=DemoMethod.HParams())\n",
    "setting = DomainIncrementalSetting(dataset=\"fashionmnist\")\n",
    "\n",
    "results = setting.apply(method)"
   ]
  },
  {
   "source": [
    "## Results:"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "source": [
    "print(results.summary())"
   ],
   "cell_type": "code",
   "metadata": {},
   "execution_count": 5,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "{\n\t\"Task 0\": {\n\t\t\"Task 0\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.989919\n\t\t},\n\t\t\"Task 1\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.666667\n\t\t},\n\t\t\"Task 2\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.481351\n\t\t},\n\t\t\"Task 3\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.494048\n\t\t},\n\t\t\"Task 4\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.5\n\t\t}\n\t},\n\t\"Task 1\": {\n\t\t\"Task 0\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.61744\n\t\t},\n\t\t\"Task 1\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.96131\n\t\t},\n\t\t\"Task 2\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.422379\n\t\t},\n\t\t\"Task 3\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.360119\n\t\t},\n\t\t\"Task 4\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.477823\n\t\t}\n\t},\n\t\"Task 2\": {\n\t\t\"Task 0\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.506048\n\t\t},\n\t\t\"Task 1\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.564484\n\t\t},\n\t\t\"Task 2\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 1.0\n\t\t},\n\t\t\"Task 3\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.996528\n\t\t},\n\t\t\"Task 4\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.718246\n\t\t}\n\t},\n\t\"Task 3\": {\n\t\t\"Task 0\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.498488\n\t\t},\n\t\t\"Task 1\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.502976\n\t\t},\n\t\t\"Task 2\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.996472\n\t\t},\n\t\t\"Task 3\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 1.0\n\t\t},\n\t\t\"Task 4\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.960181\n\t\t}\n\t},\n\t\"Task 4\": {\n\t\t\"Task 0\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.537802\n\t\t},\n\t\t\"Task 1\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.549603\n\t\t},\n\t\t\"Task 2\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.918851\n\t\t},\n\t\t\"Task 3\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.994048\n\t\t},\n\t\t\"Task 4\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.995464\n\t\t}\n\t},\n\t\"Final/Average Online Performance\": 0,\n\t\"Final/Average Final Performance\": 0.798978,\n\t\"Final/Runtime (seconds)\": 30.118470110999997,\n\t\"Final/CL Score\": 0.6793868\n}\n\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "{'task_metrics': <Figure size 432x288 with 1 Axes>}"
      ]
     },
     "metadata": {},
     "execution_count": 6
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Created with matplotlib (https://matplotlib.org/) -->\n<svg height=\"277.314375pt\" version=\"1.1\" viewBox=\"0 0 385.78125 277.314375\" width=\"385.78125pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <metadata>\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n   <cc:Work>\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n    <dc:date>2021-02-25T17:29:31.358397</dc:date>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:creator>\n     <cc:Agent>\n      <dc:title>Matplotlib v3.3.4, https://matplotlib.org/</dc:title>\n     </cc:Agent>\n    </dc:creator>\n   </cc:Work>\n  </rdf:RDF>\n </metadata>\n <defs>\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M 0 277.314375 \nL 385.78125 277.314375 \nL 385.78125 0 \nL 0 0 \nz\n\" style=\"fill:none;\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g id=\"patch_2\">\n    <path d=\"M 43.78125 239.758125 \nL 378.58125 239.758125 \nL 378.58125 22.318125 \nL 43.78125 22.318125 \nz\n\" style=\"fill:#ffffff;\"/>\n   </g>\n   <g id=\"patch_3\">\n    <path clip-path=\"url(#p3f79f8a23b)\" d=\"M 58.999432 239.758125 \nL 109.726705 239.758125 \nL 109.726705 122.818458 \nL 58.999432 122.818458 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_4\">\n    <path clip-path=\"url(#p3f79f8a23b)\" d=\"M 122.408523 239.758125 \nL 173.135795 239.758125 \nL 173.135795 120.252449 \nL 122.408523 120.252449 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_5\">\n    <path clip-path=\"url(#p3f79f8a23b)\" d=\"M 185.817614 239.758125 \nL 236.544886 239.758125 \nL 236.544886 39.963164 \nL 185.817614 39.963164 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_6\">\n    <path clip-path=\"url(#p3f79f8a23b)\" d=\"M 249.226705 239.758125 \nL 299.953977 239.758125 \nL 299.953977 23.612328 \nL 249.226705 23.612328 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_7\">\n    <path clip-path=\"url(#p3f79f8a23b)\" d=\"M 312.635795 239.758125 \nL 363.363068 239.758125 \nL 363.363068 23.304433 \nL 312.635795 23.304433 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"matplotlib.axis_1\">\n    <g id=\"xtick_1\">\n     <g id=\"line2d_1\">\n      <defs>\n       <path d=\"M 0 0 \nL 0 3.5 \n\" id=\"m68c5620304\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"84.363068\" xlink:href=\"#m68c5620304\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_1\">\n      <!-- 0 -->\n      <g transform=\"translate(81.181818 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 31.78125 66.40625 \nQ 24.171875 66.40625 20.328125 58.90625 \nQ 16.5 51.421875 16.5 36.375 \nQ 16.5 21.390625 20.328125 13.890625 \nQ 24.171875 6.390625 31.78125 6.390625 \nQ 39.453125 6.390625 43.28125 13.890625 \nQ 47.125 21.390625 47.125 36.375 \nQ 47.125 51.421875 43.28125 58.90625 \nQ 39.453125 66.40625 31.78125 66.40625 \nz\nM 31.78125 74.21875 \nQ 44.046875 74.21875 50.515625 64.515625 \nQ 56.984375 54.828125 56.984375 36.375 \nQ 56.984375 17.96875 50.515625 8.265625 \nQ 44.046875 -1.421875 31.78125 -1.421875 \nQ 19.53125 -1.421875 13.0625 8.265625 \nQ 6.59375 17.96875 6.59375 36.375 \nQ 6.59375 54.828125 13.0625 64.515625 \nQ 19.53125 74.21875 31.78125 74.21875 \nz\n\" id=\"DejaVuSans-48\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_2\">\n     <g id=\"line2d_2\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"147.772159\" xlink:href=\"#m68c5620304\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_2\">\n      <!-- 1 -->\n      <g transform=\"translate(144.590909 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 12.40625 8.296875 \nL 28.515625 8.296875 \nL 28.515625 63.921875 \nL 10.984375 60.40625 \nL 10.984375 69.390625 \nL 28.421875 72.90625 \nL 38.28125 72.90625 \nL 38.28125 8.296875 \nL 54.390625 8.296875 \nL 54.390625 0 \nL 12.40625 0 \nz\n\" id=\"DejaVuSans-49\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-49\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_3\">\n     <g id=\"line2d_3\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"211.18125\" xlink:href=\"#m68c5620304\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_3\">\n      <!-- 2 -->\n      <g transform=\"translate(208 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 19.1875 8.296875 \nL 53.609375 8.296875 \nL 53.609375 0 \nL 7.328125 0 \nL 7.328125 8.296875 \nQ 12.9375 14.109375 22.625 23.890625 \nQ 32.328125 33.6875 34.8125 36.53125 \nQ 39.546875 41.84375 41.421875 45.53125 \nQ 43.3125 49.21875 43.3125 52.78125 \nQ 43.3125 58.59375 39.234375 62.25 \nQ 35.15625 65.921875 28.609375 65.921875 \nQ 23.96875 65.921875 18.8125 64.3125 \nQ 13.671875 62.703125 7.8125 59.421875 \nL 7.8125 69.390625 \nQ 13.765625 71.78125 18.9375 73 \nQ 24.125 74.21875 28.421875 74.21875 \nQ 39.75 74.21875 46.484375 68.546875 \nQ 53.21875 62.890625 53.21875 53.421875 \nQ 53.21875 48.921875 51.53125 44.890625 \nQ 49.859375 40.875 45.40625 35.40625 \nQ 44.1875 33.984375 37.640625 27.21875 \nQ 31.109375 20.453125 19.1875 8.296875 \nz\n\" id=\"DejaVuSans-50\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_4\">\n     <g id=\"line2d_4\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"274.590341\" xlink:href=\"#m68c5620304\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_4\">\n      <!-- 3 -->\n      <g transform=\"translate(271.409091 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 40.578125 39.3125 \nQ 47.65625 37.796875 51.625 33 \nQ 55.609375 28.21875 55.609375 21.1875 \nQ 55.609375 10.40625 48.1875 4.484375 \nQ 40.765625 -1.421875 27.09375 -1.421875 \nQ 22.515625 -1.421875 17.65625 -0.515625 \nQ 12.796875 0.390625 7.625 2.203125 \nL 7.625 11.71875 \nQ 11.71875 9.328125 16.59375 8.109375 \nQ 21.484375 6.890625 26.8125 6.890625 \nQ 36.078125 6.890625 40.9375 10.546875 \nQ 45.796875 14.203125 45.796875 21.1875 \nQ 45.796875 27.640625 41.28125 31.265625 \nQ 36.765625 34.90625 28.71875 34.90625 \nL 20.21875 34.90625 \nL 20.21875 43.015625 \nL 29.109375 43.015625 \nQ 36.375 43.015625 40.234375 45.921875 \nQ 44.09375 48.828125 44.09375 54.296875 \nQ 44.09375 59.90625 40.109375 62.90625 \nQ 36.140625 65.921875 28.71875 65.921875 \nQ 24.65625 65.921875 20.015625 65.03125 \nQ 15.375 64.15625 9.8125 62.3125 \nL 9.8125 71.09375 \nQ 15.4375 72.65625 20.34375 73.4375 \nQ 25.25 74.21875 29.59375 74.21875 \nQ 40.828125 74.21875 47.359375 69.109375 \nQ 53.90625 64.015625 53.90625 55.328125 \nQ 53.90625 49.265625 50.4375 45.09375 \nQ 46.96875 40.921875 40.578125 39.3125 \nz\n\" id=\"DejaVuSans-51\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-51\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_5\">\n     <g id=\"line2d_5\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"337.999432\" xlink:href=\"#m68c5620304\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_5\">\n      <!-- 4 -->\n      <g transform=\"translate(334.818182 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 37.796875 64.3125 \nL 12.890625 25.390625 \nL 37.796875 25.390625 \nz\nM 35.203125 72.90625 \nL 47.609375 72.90625 \nL 47.609375 25.390625 \nL 58.015625 25.390625 \nL 58.015625 17.1875 \nL 47.609375 17.1875 \nL 47.609375 0 \nL 37.796875 0 \nL 37.796875 17.1875 \nL 4.890625 17.1875 \nL 4.890625 26.703125 \nz\n\" id=\"DejaVuSans-52\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-52\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"text_6\">\n     <!-- Task -->\n     <g transform=\"translate(200.388281 268.034687)scale(0.1 -0.1)\">\n      <defs>\n       <path d=\"M -0.296875 72.90625 \nL 61.375 72.90625 \nL 61.375 64.59375 \nL 35.5 64.59375 \nL 35.5 0 \nL 25.59375 0 \nL 25.59375 64.59375 \nL -0.296875 64.59375 \nz\n\" id=\"DejaVuSans-84\"/>\n       <path d=\"M 34.28125 27.484375 \nQ 23.390625 27.484375 19.1875 25 \nQ 14.984375 22.515625 14.984375 16.5 \nQ 14.984375 11.71875 18.140625 8.90625 \nQ 21.296875 6.109375 26.703125 6.109375 \nQ 34.1875 6.109375 38.703125 11.40625 \nQ 43.21875 16.703125 43.21875 25.484375 \nL 43.21875 27.484375 \nz\nM 52.203125 31.203125 \nL 52.203125 0 \nL 43.21875 0 \nL 43.21875 8.296875 \nQ 40.140625 3.328125 35.546875 0.953125 \nQ 30.953125 -1.421875 24.3125 -1.421875 \nQ 15.921875 -1.421875 10.953125 3.296875 \nQ 6 8.015625 6 15.921875 \nQ 6 25.140625 12.171875 29.828125 \nQ 18.359375 34.515625 30.609375 34.515625 \nL 43.21875 34.515625 \nL 43.21875 35.40625 \nQ 43.21875 41.609375 39.140625 45 \nQ 35.0625 48.390625 27.6875 48.390625 \nQ 23 48.390625 18.546875 47.265625 \nQ 14.109375 46.140625 10.015625 43.890625 \nL 10.015625 52.203125 \nQ 14.9375 54.109375 19.578125 55.046875 \nQ 24.21875 56 28.609375 56 \nQ 40.484375 56 46.34375 49.84375 \nQ 52.203125 43.703125 52.203125 31.203125 \nz\n\" id=\"DejaVuSans-97\"/>\n       <path d=\"M 44.28125 53.078125 \nL 44.28125 44.578125 \nQ 40.484375 46.53125 36.375 47.5 \nQ 32.28125 48.484375 27.875 48.484375 \nQ 21.1875 48.484375 17.84375 46.4375 \nQ 14.5 44.390625 14.5 40.28125 \nQ 14.5 37.15625 16.890625 35.375 \nQ 19.28125 33.59375 26.515625 31.984375 \nL 29.59375 31.296875 \nQ 39.15625 29.25 43.1875 25.515625 \nQ 47.21875 21.78125 47.21875 15.09375 \nQ 47.21875 7.46875 41.1875 3.015625 \nQ 35.15625 -1.421875 24.609375 -1.421875 \nQ 20.21875 -1.421875 15.453125 -0.5625 \nQ 10.6875 0.296875 5.421875 2 \nL 5.421875 11.28125 \nQ 10.40625 8.6875 15.234375 7.390625 \nQ 20.0625 6.109375 24.8125 6.109375 \nQ 31.15625 6.109375 34.5625 8.28125 \nQ 37.984375 10.453125 37.984375 14.40625 \nQ 37.984375 18.0625 35.515625 20.015625 \nQ 33.0625 21.96875 24.703125 23.78125 \nL 21.578125 24.515625 \nQ 13.234375 26.265625 9.515625 29.90625 \nQ 5.8125 33.546875 5.8125 39.890625 \nQ 5.8125 47.609375 11.28125 51.796875 \nQ 16.75 56 26.8125 56 \nQ 31.78125 56 36.171875 55.265625 \nQ 40.578125 54.546875 44.28125 53.078125 \nz\n\" id=\"DejaVuSans-115\"/>\n       <path d=\"M 9.078125 75.984375 \nL 18.109375 75.984375 \nL 18.109375 31.109375 \nL 44.921875 54.6875 \nL 56.390625 54.6875 \nL 27.390625 29.109375 \nL 57.625 0 \nL 45.90625 0 \nL 18.109375 26.703125 \nL 18.109375 0 \nL 9.078125 0 \nz\n\" id=\"DejaVuSans-107\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-84\"/>\n      <use x=\"44.583984\" xlink:href=\"#DejaVuSans-97\"/>\n      <use x=\"105.863281\" xlink:href=\"#DejaVuSans-115\"/>\n      <use x=\"157.962891\" xlink:href=\"#DejaVuSans-107\"/>\n     </g>\n    </g>\n   </g>\n   <g id=\"matplotlib.axis_2\">\n    <g id=\"ytick_1\">\n     <g id=\"line2d_6\">\n      <defs>\n       <path d=\"M 0 0 \nL -3.5 0 \n\" id=\"m13396888ec\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m13396888ec\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_7\">\n      <!-- 0.0 -->\n      <g transform=\"translate(20.878125 243.557344)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 10.6875 12.40625 \nL 21 12.40625 \nL 21 0 \nL 10.6875 0 \nz\n\" id=\"DejaVuSans-46\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_2\">\n     <g id=\"line2d_7\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m13396888ec\" y=\"196.270125\"/>\n      </g>\n     </g>\n     <g id=\"text_8\">\n      <!-- 0.2 -->\n      <g transform=\"translate(20.878125 200.069344)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_3\">\n     <g id=\"line2d_8\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m13396888ec\" y=\"152.782125\"/>\n      </g>\n     </g>\n     <g id=\"text_9\">\n      <!-- 0.4 -->\n      <g transform=\"translate(20.878125 156.581344)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-52\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_4\">\n     <g id=\"line2d_9\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m13396888ec\" y=\"109.294125\"/>\n      </g>\n     </g>\n     <g id=\"text_10\">\n      <!-- 0.6 -->\n      <g transform=\"translate(20.878125 113.093344)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 33.015625 40.375 \nQ 26.375 40.375 22.484375 35.828125 \nQ 18.609375 31.296875 18.609375 23.390625 \nQ 18.609375 15.53125 22.484375 10.953125 \nQ 26.375 6.390625 33.015625 6.390625 \nQ 39.65625 6.390625 43.53125 10.953125 \nQ 47.40625 15.53125 47.40625 23.390625 \nQ 47.40625 31.296875 43.53125 35.828125 \nQ 39.65625 40.375 33.015625 40.375 \nz\nM 52.59375 71.296875 \nL 52.59375 62.3125 \nQ 48.875 64.0625 45.09375 64.984375 \nQ 41.3125 65.921875 37.59375 65.921875 \nQ 27.828125 65.921875 22.671875 59.328125 \nQ 17.53125 52.734375 16.796875 39.40625 \nQ 19.671875 43.65625 24.015625 45.921875 \nQ 28.375 48.1875 33.59375 48.1875 \nQ 44.578125 48.1875 50.953125 41.515625 \nQ 57.328125 34.859375 57.328125 23.390625 \nQ 57.328125 12.15625 50.6875 5.359375 \nQ 44.046875 -1.421875 33.015625 -1.421875 \nQ 20.359375 -1.421875 13.671875 8.265625 \nQ 6.984375 17.96875 6.984375 36.375 \nQ 6.984375 53.65625 15.1875 63.9375 \nQ 23.390625 74.21875 37.203125 74.21875 \nQ 40.921875 74.21875 44.703125 73.484375 \nQ 48.484375 72.75 52.59375 71.296875 \nz\n\" id=\"DejaVuSans-54\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-54\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_5\">\n     <g id=\"line2d_10\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m13396888ec\" y=\"65.806125\"/>\n      </g>\n     </g>\n     <g id=\"text_11\">\n      <!-- 0.8 -->\n      <g transform=\"translate(20.878125 69.605344)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 31.78125 34.625 \nQ 24.75 34.625 20.71875 30.859375 \nQ 16.703125 27.09375 16.703125 20.515625 \nQ 16.703125 13.921875 20.71875 10.15625 \nQ 24.75 6.390625 31.78125 6.390625 \nQ 38.8125 6.390625 42.859375 10.171875 \nQ 46.921875 13.96875 46.921875 20.515625 \nQ 46.921875 27.09375 42.890625 30.859375 \nQ 38.875 34.625 31.78125 34.625 \nz\nM 21.921875 38.8125 \nQ 15.578125 40.375 12.03125 44.71875 \nQ 8.5 49.078125 8.5 55.328125 \nQ 8.5 64.0625 14.71875 69.140625 \nQ 20.953125 74.21875 31.78125 74.21875 \nQ 42.671875 74.21875 48.875 69.140625 \nQ 55.078125 64.0625 55.078125 55.328125 \nQ 55.078125 49.078125 51.53125 44.71875 \nQ 48 40.375 41.703125 38.8125 \nQ 48.828125 37.15625 52.796875 32.3125 \nQ 56.78125 27.484375 56.78125 20.515625 \nQ 56.78125 9.90625 50.3125 4.234375 \nQ 43.84375 -1.421875 31.78125 -1.421875 \nQ 19.734375 -1.421875 13.25 4.234375 \nQ 6.78125 9.90625 6.78125 20.515625 \nQ 6.78125 27.484375 10.78125 32.3125 \nQ 14.796875 37.15625 21.921875 38.8125 \nz\nM 18.3125 54.390625 \nQ 18.3125 48.734375 21.84375 45.5625 \nQ 25.390625 42.390625 31.78125 42.390625 \nQ 38.140625 42.390625 41.71875 45.5625 \nQ 45.3125 48.734375 45.3125 54.390625 \nQ 45.3125 60.0625 41.71875 63.234375 \nQ 38.140625 66.40625 31.78125 66.40625 \nQ 25.390625 66.40625 21.84375 63.234375 \nQ 18.3125 60.0625 18.3125 54.390625 \nz\n\" id=\"DejaVuSans-56\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-56\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_6\">\n     <g id=\"line2d_11\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m13396888ec\" y=\"22.318125\"/>\n      </g>\n     </g>\n     <g id=\"text_12\">\n      <!-- 1.0 -->\n      <g transform=\"translate(20.878125 26.117344)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"text_13\">\n     <!-- Accuracy -->\n     <g transform=\"translate(14.798438 153.86625)rotate(-90)scale(0.1 -0.1)\">\n      <defs>\n       <path d=\"M 34.1875 63.1875 \nL 20.796875 26.90625 \nL 47.609375 26.90625 \nz\nM 28.609375 72.90625 \nL 39.796875 72.90625 \nL 67.578125 0 \nL 57.328125 0 \nL 50.6875 18.703125 \nL 17.828125 18.703125 \nL 11.1875 0 \nL 0.78125 0 \nz\n\" id=\"DejaVuSans-65\"/>\n       <path d=\"M 48.78125 52.59375 \nL 48.78125 44.1875 \nQ 44.96875 46.296875 41.140625 47.34375 \nQ 37.3125 48.390625 33.40625 48.390625 \nQ 24.65625 48.390625 19.8125 42.84375 \nQ 14.984375 37.3125 14.984375 27.296875 \nQ 14.984375 17.28125 19.8125 11.734375 \nQ 24.65625 6.203125 33.40625 6.203125 \nQ 37.3125 6.203125 41.140625 7.25 \nQ 44.96875 8.296875 48.78125 10.40625 \nL 48.78125 2.09375 \nQ 45.015625 0.34375 40.984375 -0.53125 \nQ 36.96875 -1.421875 32.421875 -1.421875 \nQ 20.0625 -1.421875 12.78125 6.34375 \nQ 5.515625 14.109375 5.515625 27.296875 \nQ 5.515625 40.671875 12.859375 48.328125 \nQ 20.21875 56 33.015625 56 \nQ 37.15625 56 41.109375 55.140625 \nQ 45.0625 54.296875 48.78125 52.59375 \nz\n\" id=\"DejaVuSans-99\"/>\n       <path d=\"M 8.5 21.578125 \nL 8.5 54.6875 \nL 17.484375 54.6875 \nL 17.484375 21.921875 \nQ 17.484375 14.15625 20.5 10.265625 \nQ 23.53125 6.390625 29.59375 6.390625 \nQ 36.859375 6.390625 41.078125 11.03125 \nQ 45.3125 15.671875 45.3125 23.6875 \nL 45.3125 54.6875 \nL 54.296875 54.6875 \nL 54.296875 0 \nL 45.3125 0 \nL 45.3125 8.40625 \nQ 42.046875 3.421875 37.71875 1 \nQ 33.40625 -1.421875 27.6875 -1.421875 \nQ 18.265625 -1.421875 13.375 4.4375 \nQ 8.5 10.296875 8.5 21.578125 \nz\nM 31.109375 56 \nz\n\" id=\"DejaVuSans-117\"/>\n       <path d=\"M 41.109375 46.296875 \nQ 39.59375 47.171875 37.8125 47.578125 \nQ 36.03125 48 33.890625 48 \nQ 26.265625 48 22.1875 43.046875 \nQ 18.109375 38.09375 18.109375 28.8125 \nL 18.109375 0 \nL 9.078125 0 \nL 9.078125 54.6875 \nL 18.109375 54.6875 \nL 18.109375 46.1875 \nQ 20.953125 51.171875 25.484375 53.578125 \nQ 30.03125 56 36.53125 56 \nQ 37.453125 56 38.578125 55.875 \nQ 39.703125 55.765625 41.0625 55.515625 \nz\n\" id=\"DejaVuSans-114\"/>\n       <path d=\"M 32.171875 -5.078125 \nQ 28.375 -14.84375 24.75 -17.8125 \nQ 21.140625 -20.796875 15.09375 -20.796875 \nL 7.90625 -20.796875 \nL 7.90625 -13.28125 \nL 13.1875 -13.28125 \nQ 16.890625 -13.28125 18.9375 -11.515625 \nQ 21 -9.765625 23.484375 -3.21875 \nL 25.09375 0.875 \nL 2.984375 54.6875 \nL 12.5 54.6875 \nL 29.59375 11.921875 \nL 46.6875 54.6875 \nL 56.203125 54.6875 \nz\n\" id=\"DejaVuSans-121\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-65\"/>\n      <use x=\"66.658203\" xlink:href=\"#DejaVuSans-99\"/>\n      <use x=\"121.638672\" xlink:href=\"#DejaVuSans-99\"/>\n      <use x=\"176.619141\" xlink:href=\"#DejaVuSans-117\"/>\n      <use x=\"239.998047\" xlink:href=\"#DejaVuSans-114\"/>\n      <use x=\"281.111328\" xlink:href=\"#DejaVuSans-97\"/>\n      <use x=\"342.390625\" xlink:href=\"#DejaVuSans-99\"/>\n      <use x=\"397.371094\" xlink:href=\"#DejaVuSans-121\"/>\n     </g>\n    </g>\n   </g>\n   <g id=\"patch_8\">\n    <path d=\"M 43.78125 239.758125 \nL 43.78125 22.318125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_9\">\n    <path d=\"M 378.58125 239.758125 \nL 378.58125 22.318125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_10\">\n    <path d=\"M 43.78125 239.758125 \nL 378.58125 239.758125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_11\">\n    <path d=\"M 43.78125 22.318125 \nL 378.58125 22.318125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"text_14\">\n    <!-- 54% -->\n    <g transform=\"translate(73.249787 117.738771)scale(0.1 -0.1)\">\n     <defs>\n      <path d=\"M 10.796875 72.90625 \nL 49.515625 72.90625 \nL 49.515625 64.59375 \nL 19.828125 64.59375 \nL 19.828125 46.734375 \nQ 21.96875 47.46875 24.109375 47.828125 \nQ 26.265625 48.1875 28.421875 48.1875 \nQ 40.625 48.1875 47.75 41.5 \nQ 54.890625 34.8125 54.890625 23.390625 \nQ 54.890625 11.625 47.5625 5.09375 \nQ 40.234375 -1.421875 26.90625 -1.421875 \nQ 22.3125 -1.421875 17.546875 -0.640625 \nQ 12.796875 0.140625 7.71875 1.703125 \nL 7.71875 11.625 \nQ 12.109375 9.234375 16.796875 8.0625 \nQ 21.484375 6.890625 26.703125 6.890625 \nQ 35.15625 6.890625 40.078125 11.328125 \nQ 45.015625 15.765625 45.015625 23.390625 \nQ 45.015625 31 40.078125 35.4375 \nQ 35.15625 39.890625 26.703125 39.890625 \nQ 22.75 39.890625 18.8125 39.015625 \nQ 14.890625 38.140625 10.796875 36.28125 \nz\n\" id=\"DejaVuSans-53\"/>\n      <path d=\"M 72.703125 32.078125 \nQ 68.453125 32.078125 66.03125 28.46875 \nQ 63.625 24.859375 63.625 18.40625 \nQ 63.625 12.0625 66.03125 8.421875 \nQ 68.453125 4.78125 72.703125 4.78125 \nQ 76.859375 4.78125 79.265625 8.421875 \nQ 81.6875 12.0625 81.6875 18.40625 \nQ 81.6875 24.8125 79.265625 28.4375 \nQ 76.859375 32.078125 72.703125 32.078125 \nz\nM 72.703125 38.28125 \nQ 80.421875 38.28125 84.953125 32.90625 \nQ 89.5 27.546875 89.5 18.40625 \nQ 89.5 9.28125 84.9375 3.921875 \nQ 80.375 -1.421875 72.703125 -1.421875 \nQ 64.890625 -1.421875 60.34375 3.921875 \nQ 55.8125 9.28125 55.8125 18.40625 \nQ 55.8125 27.59375 60.375 32.9375 \nQ 64.9375 38.28125 72.703125 38.28125 \nz\nM 22.3125 68.015625 \nQ 18.109375 68.015625 15.6875 64.375 \nQ 13.28125 60.75 13.28125 54.390625 \nQ 13.28125 47.953125 15.671875 44.328125 \nQ 18.0625 40.71875 22.3125 40.71875 \nQ 26.5625 40.71875 28.96875 44.328125 \nQ 31.390625 47.953125 31.390625 54.390625 \nQ 31.390625 60.6875 28.953125 64.34375 \nQ 26.515625 68.015625 22.3125 68.015625 \nz\nM 66.40625 74.21875 \nL 74.21875 74.21875 \nL 28.609375 -1.421875 \nL 20.796875 -1.421875 \nz\nM 22.3125 74.21875 \nQ 30.03125 74.21875 34.609375 68.875 \nQ 39.203125 63.53125 39.203125 54.390625 \nQ 39.203125 45.171875 34.640625 39.84375 \nQ 30.078125 34.515625 22.3125 34.515625 \nQ 14.546875 34.515625 10.03125 39.859375 \nQ 5.515625 45.21875 5.515625 54.390625 \nQ 5.515625 63.484375 10.046875 68.84375 \nQ 14.59375 74.21875 22.3125 74.21875 \nz\n\" id=\"DejaVuSans-37\"/>\n     </defs>\n     <use xlink:href=\"#DejaVuSans-53\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-52\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_15\">\n    <!-- 55% -->\n    <g transform=\"translate(136.658878 115.172761)scale(0.1 -0.1)\">\n     <use xlink:href=\"#DejaVuSans-53\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_16\">\n    <!-- 92% -->\n    <g transform=\"translate(200.067969 34.883476)scale(0.1 -0.1)\">\n     <defs>\n      <path d=\"M 10.984375 1.515625 \nL 10.984375 10.5 \nQ 14.703125 8.734375 18.5 7.8125 \nQ 22.3125 6.890625 25.984375 6.890625 \nQ 35.75 6.890625 40.890625 13.453125 \nQ 46.046875 20.015625 46.78125 33.40625 \nQ 43.953125 29.203125 39.59375 26.953125 \nQ 35.25 24.703125 29.984375 24.703125 \nQ 19.046875 24.703125 12.671875 31.3125 \nQ 6.296875 37.9375 6.296875 49.421875 \nQ 6.296875 60.640625 12.9375 67.421875 \nQ 19.578125 74.21875 30.609375 74.21875 \nQ 43.265625 74.21875 49.921875 64.515625 \nQ 56.59375 54.828125 56.59375 36.375 \nQ 56.59375 19.140625 48.40625 8.859375 \nQ 40.234375 -1.421875 26.421875 -1.421875 \nQ 22.703125 -1.421875 18.890625 -0.6875 \nQ 15.09375 0.046875 10.984375 1.515625 \nz\nM 30.609375 32.421875 \nQ 37.25 32.421875 41.125 36.953125 \nQ 45.015625 41.5 45.015625 49.421875 \nQ 45.015625 57.28125 41.125 61.84375 \nQ 37.25 66.40625 30.609375 66.40625 \nQ 23.96875 66.40625 20.09375 61.84375 \nQ 16.21875 57.28125 16.21875 49.421875 \nQ 16.21875 41.5 20.09375 36.953125 \nQ 23.96875 32.421875 30.609375 32.421875 \nz\n\" id=\"DejaVuSans-57\"/>\n     </defs>\n     <use xlink:href=\"#DejaVuSans-57\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-50\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_17\">\n    <!-- 99% -->\n    <g transform=\"translate(263.47706 18.53264)scale(0.1 -0.1)\">\n     <use xlink:href=\"#DejaVuSans-57\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-57\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_18\">\n    <!-- 100% -->\n    <g transform=\"translate(323.704901 18.224745)scale(0.1 -0.1)\">\n     <use xlink:href=\"#DejaVuSans-49\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n     <use x=\"190.869141\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_19\">\n    <!-- Task Accuracy -->\n    <g transform=\"translate(168.929063 16.318125)scale(0.12 -0.12)\">\n     <defs>\n      <path id=\"DejaVuSans-32\"/>\n     </defs>\n     <use xlink:href=\"#DejaVuSans-84\"/>\n     <use x=\"44.583984\" xlink:href=\"#DejaVuSans-97\"/>\n     <use x=\"105.863281\" xlink:href=\"#DejaVuSans-115\"/>\n     <use x=\"157.962891\" xlink:href=\"#DejaVuSans-107\"/>\n     <use x=\"215.873047\" xlink:href=\"#DejaVuSans-32\"/>\n     <use x=\"247.660156\" xlink:href=\"#DejaVuSans-65\"/>\n     <use x=\"314.318359\" xlink:href=\"#DejaVuSans-99\"/>\n     <use x=\"369.298828\" xlink:href=\"#DejaVuSans-99\"/>\n     <use x=\"424.279297\" xlink:href=\"#DejaVuSans-117\"/>\n     <use x=\"487.658203\" xlink:href=\"#DejaVuSans-114\"/>\n     <use x=\"528.771484\" xlink:href=\"#DejaVuSans-97\"/>\n     <use x=\"590.050781\" xlink:href=\"#DejaVuSans-99\"/>\n     <use x=\"645.03125\" xlink:href=\"#DejaVuSans-121\"/>\n    </g>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"p3f79f8a23b\">\n   <rect height=\"217.44\" width=\"334.8\" x=\"43.78125\" y=\"22.318125\"/>\n  </clipPath>\n </defs>\n</svg>\n",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "source": [
    "results.make_plots()"
   ]
  },
  {
   "source": [
    "As you can see, our model's performance quickly deteriorates as new tasks are learned, a process refered to as \"Catastrophic Forgetting\".\n",
    "Next, we'll try to do something about it.\n"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "source": [
    "## Adding a CL Mechanism\n",
    "\n",
    "First, by taking a look at the logs above, you will notice that we are told that our Method doesn't have an `on_task_switch` method.\n",
    "\n",
    "A Setting would call this `on_task_switch` method during training or evaluation if we are allowed to know when task boundaries occur in that setting. Additionally, if it's allowed in that Setting, we might also receive the index of the new task we are switching to.\n",
    "\n",
    "Using this information, here we will add an EWC-like penalty to our model, which will prevent its weights from changing too much between tasks. We'll use the `on_task_switch` method to update the 'anchor' weights everytime a task boundary is encountered.\n"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "source": [],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "from copy import deepcopy\n",
    "from sequoia.utils import dict_intersection\n",
    "\n",
    "class MyImprovedModel(MyModel):\n",
    "    \"\"\" Adds an ewc-like penalty to the demo model. \"\"\"\n",
    "    def __init__(self,\n",
    "                 observation_space: gym.Space,\n",
    "                 action_space: gym.Space,\n",
    "                 reward_space: gym.Space,\n",
    "                 ewc_coefficient: float = 1.0,\n",
    "                 ewc_p_norm: int = 2,\n",
    "                 ):\n",
    "        super().__init__(\n",
    "            observation_space,\n",
    "            action_space,\n",
    "            reward_space,\n",
    "        )\n",
    "        self.ewc_coefficient = ewc_coefficient\n",
    "        self.ewc_p_norm = ewc_p_norm\n",
    "\n",
    "        self.previous_model_weights: Dict[str, Tensor] = {}\n",
    "\n",
    "        self._previous_task: Optional[int] = None\n",
    "        self._n_switches: int = 0\n",
    "\n",
    "    def shared_step(self, batch: Tuple[Observations, Rewards], *args, **kwargs):\n",
    "        base_loss, metrics = super().shared_step(batch, *args, **kwargs)\n",
    "        ewc_loss = self.ewc_coefficient * self.ewc_loss()\n",
    "        metrics[\"ewc_loss\"] = ewc_loss\n",
    "        return base_loss + ewc_loss, metrics\n",
    "\n",
    "    def on_task_switch(self, task_id: Optional[int])-> None:\n",
    "        \"\"\" Executed when the task switches (to either a known or unknown task).\n",
    "        \"\"\"\n",
    "        if self._previous_task is None and self._n_switches == 0:\n",
    "            print(\"Starting the first task, no EWC update.\")\n",
    "        elif task_id is None or task_id != self._previous_task:\n",
    "            # NOTE: We also switch between unknown tasks.\n",
    "            print(f\"Switching tasks: {self._previous_task} -> {task_id}: \")\n",
    "            print(f\"Updating the EWC 'anchor' weights.\")\n",
    "            self._previous_task = task_id\n",
    "            self.previous_model_weights.clear()\n",
    "            self.previous_model_weights.update(deepcopy({\n",
    "                k: v.detach() for k, v in self.named_parameters()\n",
    "            }))\n",
    "        self._n_switches += 1\n",
    "\n",
    "    def ewc_loss(self) -> Tensor:\n",
    "        \"\"\"Gets an 'ewc-like' regularization loss.\n",
    "\n",
    "        NOTE: This is a simplified version of EWC where the loss is the P-norm\n",
    "        between the current weights and the weights as they were on the begining\n",
    "        of the task.\n",
    "        \"\"\"\n",
    "        if self._previous_task is None:\n",
    "            # We're in the first task: do nothing.\n",
    "            return 0.\n",
    "\n",
    "        old_weights: Dict[str, Tensor] = self.previous_model_weights\n",
    "        new_weights: Dict[str, Tensor] = dict(self.named_parameters())\n",
    "\n",
    "        loss = 0.\n",
    "        for weight_name, (new_w, old_w) in dict_intersection(new_weights, old_weights):\n",
    "            loss += torch.dist(new_w, old_w.type_as(new_w), p=self.ewc_p_norm)\n",
    "        return loss\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "class ImprovedDemoMethod(DemoMethod):\n",
    "    \"\"\" Improved version of the demo method, that adds an ewc-like regularizer.\n",
    "    \"\"\"\n",
    "    # Name of this method:    \n",
    "    @dataclass\n",
    "    class HParams(DemoMethod.HParams):\n",
    "        \"\"\" Hyperparameters of this new improved method. (Adds ewc params).\"\"\"\n",
    "        # Coefficient of the ewc-like loss.\n",
    "        ewc_coefficient: float = 1.0\n",
    "        # Distance norm used in the ewc loss.\n",
    "        ewc_p_norm: int = 2\n",
    "\n",
    "    def __init__(self, hparams: HParams):\n",
    "        super().__init__(hparams=hparams)\n",
    "    \n",
    "    def configure(self, setting: ClassIncrementalSetting):\n",
    "        # Use the improved model, with the added EWC-like term.\n",
    "        self.model = MyImprovedModel(\n",
    "            observation_space=setting.observation_space,\n",
    "            action_space=setting.action_space,\n",
    "            reward_space=setting.reward_space,\n",
    "            ewc_coefficient=self.hparams.ewc_coefficient,\n",
    "            ewc_p_norm = self.hparams.ewc_p_norm,\n",
    "        )\n",
    "        self.optimizer = torch.optim.Adam(self.model.parameters(), lr=self.hparams.learning_rate)\n",
    "\n",
    "    def on_task_switch(self, task_id: Optional[int]):\n",
    "        self.model.on_task_switch(task_id)"
   ]
  },
  {
   "source": [
    "## Running the \"Improved\" method"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stderr",
     "text": [
      "2021-02-25:17:29:31,526 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:184] Starting training on task 0.\n",
      "2021-02-25:17:29:31,580 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/passive/cl/class_incremental_setting.py:433] Number of train tasks: 5.\n",
      "2021-02-25:17:29:31,581 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/passive/cl/class_incremental_setting.py:434] Number of test tasks: 5.\n",
      "Training Epoch 0:   0%|          | 0/300 [00:00<?, ?it/s]Starting the first task, no EWC update.\n",
      "Training Epoch 0: 100%|██████████| 300/300 [00:03<00:00, 79.82it/s, accuracy=1, ewc_loss=0]\n",
      "Validation Epoch 0: 100%|██████████| 75/75 [00:00<00:00, 147.76it/s, accuracy=1, ewc_loss=0, val_loss=tensor(3.3188)]\n",
      "2021-02-25:17:29:35,880 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:212] Finished Training on task 0.\n",
      "2021-02-25:17:29:35,921 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/passive/cl/class_incremental_setting.py:433] Number of train tasks: 5.\n",
      "2021-02-25:17:29:35,921 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/passive/cl/class_incremental_setting.py:434] Number of test tasks: 5.\n",
      "2021-02-25:17:29:35,950 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:347] Will query the method for actions at each step, since it doesn't implement a `test` method.\n",
      "Test:  14%|█▍        | 43/312 [00:00<00:01, 211.59it/s]Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Test: 100%|██████████| 312/312 [00:01<00:00, 239.22it/s]\n",
      "2021-02-25:17:29:37,352 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:217] Resulting objective of Test Loop: 0.690505\n",
      "2021-02-25:17:29:37,353 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:184] Starting training on task 1.\n",
      "Training Epoch 0:   0%|          | 0/300 [00:00<?, ?it/s]Switching tasks: None -> 1: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Training Epoch 0: 100%|██████████| 300/300 [00:05<00:00, 59.70it/s, accuracy=0.875, ewc_loss=tensor(0.2296, grad_fn=<MulBackward0>)]\n",
      "Validation Epoch 0: 100%|██████████| 75/75 [00:00<00:00, 143.94it/s, accuracy=0.969, ewc_loss=tensor(0.2221), val_loss=tensor(33.0478)]\n",
      "2021-02-25:17:29:42,905 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:212] Finished Training on task 1.\n",
      "2021-02-25:17:29:42,909 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:347] Will query the method for actions at each step, since it doesn't implement a `test` method.\n",
      "Test:  12%|█▎        | 39/312 [00:00<00:01, 190.68it/s]Switching tasks: 1 -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Test: 100%|██████████| 312/312 [00:01<00:00, 218.28it/s]\n",
      "2021-02-25:17:29:44,441 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:217] Resulting objective of Test Loop: 0.745092\n",
      "2021-02-25:17:29:44,442 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:184] Starting training on task 2.\n",
      "Training Epoch 0:   0%|          | 0/300 [00:00<?, ?it/s]Switching tasks: None -> 2: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Training Epoch 0: 100%|██████████| 300/300 [00:05<00:00, 54.67it/s, accuracy=0.906, ewc_loss=tensor(0.3728, grad_fn=<MulBackward0>)]\n",
      "Validation Epoch 0: 100%|██████████| 75/75 [00:00<00:00, 162.51it/s, accuracy=0.906, ewc_loss=tensor(0.3689), val_loss=tensor(43.5458)]\n",
      "2021-02-25:17:29:50,398 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:212] Finished Training on task 2.\n",
      "2021-02-25:17:29:50,402 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:347] Will query the method for actions at each step, since it doesn't implement a `test` method.\n",
      "Test:  15%|█▍        | 46/312 [00:00<00:01, 231.12it/s]Switching tasks: 2 -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Test: 100%|██████████| 312/312 [00:01<00:00, 239.81it/s]\n",
      "2021-02-25:17:29:51,801 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:217] Resulting objective of Test Loop: 0.915665\n",
      "2021-02-25:17:29:51,801 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:184] Starting training on task 3.\n",
      "Training Epoch 0:   0%|          | 0/300 [00:00<?, ?it/s]Switching tasks: None -> 3: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Training Epoch 0: 100%|██████████| 300/300 [00:05<00:00, 54.25it/s, accuracy=1, ewc_loss=tensor(0.0175, grad_fn=<MulBackward0>)]\n",
      "Validation Epoch 0: 100%|██████████| 75/75 [00:00<00:00, 144.31it/s, accuracy=0.969, ewc_loss=tensor(0.0182), val_loss=tensor(8.4141)]\n",
      "2021-02-25:17:29:57,857 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:212] Finished Training on task 3.\n",
      "2021-02-25:17:29:57,861 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:347] Will query the method for actions at each step, since it doesn't implement a `test` method.\n",
      "Test:  13%|█▎        | 42/312 [00:00<00:01, 211.24it/s]Switching tasks: 3 -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Test: 100%|██████████| 312/312 [00:01<00:00, 231.53it/s]\n",
      "2021-02-25:17:29:59,316 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:217] Resulting objective of Test Loop: 0.917368\n",
      "2021-02-25:17:29:59,317 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:184] Starting training on task 4.\n",
      "Training Epoch 0:   0%|          | 0/300 [00:00<?, ?it/s]Switching tasks: None -> 4: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Training Epoch 0: 100%|██████████| 300/300 [00:05<00:00, 55.17it/s, accuracy=1, ewc_loss=tensor(0.0487, grad_fn=<MulBackward0>)]\n",
      "Validation Epoch 0: 100%|██████████| 75/75 [00:00<00:00, 147.18it/s, accuracy=0.938, ewc_loss=tensor(0.0635), val_loss=tensor(14.3717)]\n",
      "2021-02-25:17:30:05,271 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:212] Finished Training on task 4.\n",
      "2021-02-25:17:30:05,276 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:347] Will query the method for actions at each step, since it doesn't implement a `test` method.\n",
      "Test:  14%|█▍        | 45/312 [00:00<00:01, 219.80it/s]Switching tasks: 4 -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Switching tasks: None -> None: \n",
      "Updating the EWC 'anchor' weights.\n",
      "Test: 100%|██████████| 312/312 [00:01<00:00, 219.23it/s]\n",
      "2021-02-25:17:30:06,803 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:217] Resulting objective of Test Loop: 0.90605\n",
      "2021-02-25:17:30:06,804 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:237] Finished main loop in 36.293361921000006 seconds.\n",
      "2021-02-25:17:30:06,894 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/assumptions/incremental.py:257] {\n",
      "\t\"Task 0\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.981351\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.752976\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.53125\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.640377\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.546371\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 1\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.927419\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.896825\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.457157\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.700397\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.741935\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 2\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.970766\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.780258\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.94254\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.990079\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.895665\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 3\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.972278\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.770833\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.939516\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.990575\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.914819\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 4\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.970766\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.708333\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.88004\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.989583\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.983367\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Final/Average Online Performance\": 0,\n",
      "\t\"Final/Average Final Performance\": 0.90605,\n",
      "\t\"Final/Runtime (seconds)\": 36.293361921000006,\n",
      "\t\"Final/CL Score\": 0.74363\n",
      "}\n",
      "\n",
      "2021-02-25:17:30:06,997 INFO     [/home/fabrice/repos/Sequoia/sequoia/settings/passive/cl/class_incremental_setting.py:395] {\n",
      "\t\"Task 0\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.981351\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.752976\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.53125\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.640377\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.546371\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 1\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.927419\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.896825\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.457157\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.700397\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.741935\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 2\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.970766\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.780258\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.94254\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.990079\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.895665\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 3\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.972278\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.770833\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.939516\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.990575\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.914819\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Task 4\": {\n",
      "\t\t\"Task 0\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.970766\n",
      "\t\t},\n",
      "\t\t\"Task 1\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.708333\n",
      "\t\t},\n",
      "\t\t\"Task 2\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.88004\n",
      "\t\t},\n",
      "\t\t\"Task 3\": {\n",
      "\t\t\t\"n_samples\": 2016,\n",
      "\t\t\t\"accuracy\": 0.989583\n",
      "\t\t},\n",
      "\t\t\"Task 4\": {\n",
      "\t\t\t\"n_samples\": 1984,\n",
      "\t\t\t\"accuracy\": 0.983367\n",
      "\t\t}\n",
      "\t},\n",
      "\t\"Final/Average Online Performance\": 0,\n",
      "\t\"Final/Average Final Performance\": 0.90605,\n",
      "\t\"Final/Runtime (seconds)\": 36.293361921000006,\n",
      "\t\"Final/CL Score\": 0.74363\n",
      "}\n",
      "\n"
     ]
    }
   ],
   "source": [
    "improved_method = ImprovedDemoMethod(hparams=ImprovedDemoMethod.HParams())\n",
    "setting = DomainIncrementalSetting(dataset=\"fashionmnist\")\n",
    "improved_results = setting.apply(improved_method)"
   ]
  },
  {
   "source": [
    "## Improved Results"
   ],
   "cell_type": "code",
   "metadata": {},
   "execution_count": 10,
   "outputs": []
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "{\n\t\"Task 0\": {\n\t\t\"Task 0\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.981351\n\t\t},\n\t\t\"Task 1\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.752976\n\t\t},\n\t\t\"Task 2\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.53125\n\t\t},\n\t\t\"Task 3\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.640377\n\t\t},\n\t\t\"Task 4\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.546371\n\t\t}\n\t},\n\t\"Task 1\": {\n\t\t\"Task 0\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.927419\n\t\t},\n\t\t\"Task 1\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.896825\n\t\t},\n\t\t\"Task 2\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.457157\n\t\t},\n\t\t\"Task 3\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.700397\n\t\t},\n\t\t\"Task 4\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.741935\n\t\t}\n\t},\n\t\"Task 2\": {\n\t\t\"Task 0\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.970766\n\t\t},\n\t\t\"Task 1\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.780258\n\t\t},\n\t\t\"Task 2\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.94254\n\t\t},\n\t\t\"Task 3\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.990079\n\t\t},\n\t\t\"Task 4\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.895665\n\t\t}\n\t},\n\t\"Task 3\": {\n\t\t\"Task 0\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.972278\n\t\t},\n\t\t\"Task 1\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.770833\n\t\t},\n\t\t\"Task 2\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.939516\n\t\t},\n\t\t\"Task 3\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.990575\n\t\t},\n\t\t\"Task 4\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.914819\n\t\t}\n\t},\n\t\"Task 4\": {\n\t\t\"Task 0\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.970766\n\t\t},\n\t\t\"Task 1\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.708333\n\t\t},\n\t\t\"Task 2\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.88004\n\t\t},\n\t\t\"Task 3\": {\n\t\t\t\"n_samples\": 2016,\n\t\t\t\"accuracy\": 0.989583\n\t\t},\n\t\t\"Task 4\": {\n\t\t\t\"n_samples\": 1984,\n\t\t\t\"accuracy\": 0.983367\n\t\t}\n\t},\n\t\"Final/Average Online Performance\": 0,\n\t\"Final/Average Final Performance\": 0.90605,\n\t\"Final/Runtime (seconds)\": 36.293361921000006,\n\t\"Final/CL Score\": 0.74363\n}\n\n"
     ]
    }
   ],
   "source": [
    "print(improved_results.summary())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "{'task_metrics': <Figure size 432x288 with 1 Axes>}"
      ]
     },
     "metadata": {},
     "execution_count": 12
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Created with matplotlib (https://matplotlib.org/) -->\n<svg height=\"277.314375pt\" version=\"1.1\" viewBox=\"0 0 385.78125 277.314375\" width=\"385.78125pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <metadata>\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n   <cc:Work>\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n    <dc:date>2021-02-25T17:30:07.306773</dc:date>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:creator>\n     <cc:Agent>\n      <dc:title>Matplotlib v3.3.4, https://matplotlib.org/</dc:title>\n     </cc:Agent>\n    </dc:creator>\n   </cc:Work>\n  </rdf:RDF>\n </metadata>\n <defs>\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M 0 277.314375 \nL 385.78125 277.314375 \nL 385.78125 0 \nL 0 0 \nz\n\" style=\"fill:none;\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g id=\"patch_2\">\n    <path d=\"M 43.78125 239.758125 \nL 378.58125 239.758125 \nL 378.58125 22.318125 \nL 43.78125 22.318125 \nz\n\" style=\"fill:#ffffff;\"/>\n   </g>\n   <g id=\"patch_3\">\n    <path clip-path=\"url(#p41c9b441b6)\" d=\"M 58.999432 239.758125 \nL 109.726705 239.758125 \nL 109.726705 28.674766 \nL 58.999432 28.674766 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_4\">\n    <path clip-path=\"url(#p41c9b441b6)\" d=\"M 122.408523 239.758125 \nL 173.135795 239.758125 \nL 173.135795 85.738197 \nL 122.408523 85.738197 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_5\">\n    <path clip-path=\"url(#p41c9b441b6)\" d=\"M 185.817614 239.758125 \nL 236.544886 239.758125 \nL 236.544886 48.402227 \nL 185.817614 48.402227 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_6\">\n    <path clip-path=\"url(#p41c9b441b6)\" d=\"M 249.226705 239.758125 \nL 299.953977 239.758125 \nL 299.953977 24.583197 \nL 249.226705 24.583197 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_7\">\n    <path clip-path=\"url(#p41c9b441b6)\" d=\"M 312.635795 239.758125 \nL 363.363068 239.758125 \nL 363.363068 25.934805 \nL 312.635795 25.934805 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"matplotlib.axis_1\">\n    <g id=\"xtick_1\">\n     <g id=\"line2d_1\">\n      <defs>\n       <path d=\"M 0 0 \nL 0 3.5 \n\" id=\"me6157de1af\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"84.363068\" xlink:href=\"#me6157de1af\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_1\">\n      <!-- 0 -->\n      <g transform=\"translate(81.181818 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 31.78125 66.40625 \nQ 24.171875 66.40625 20.328125 58.90625 \nQ 16.5 51.421875 16.5 36.375 \nQ 16.5 21.390625 20.328125 13.890625 \nQ 24.171875 6.390625 31.78125 6.390625 \nQ 39.453125 6.390625 43.28125 13.890625 \nQ 47.125 21.390625 47.125 36.375 \nQ 47.125 51.421875 43.28125 58.90625 \nQ 39.453125 66.40625 31.78125 66.40625 \nz\nM 31.78125 74.21875 \nQ 44.046875 74.21875 50.515625 64.515625 \nQ 56.984375 54.828125 56.984375 36.375 \nQ 56.984375 17.96875 50.515625 8.265625 \nQ 44.046875 -1.421875 31.78125 -1.421875 \nQ 19.53125 -1.421875 13.0625 8.265625 \nQ 6.59375 17.96875 6.59375 36.375 \nQ 6.59375 54.828125 13.0625 64.515625 \nQ 19.53125 74.21875 31.78125 74.21875 \nz\n\" id=\"DejaVuSans-48\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_2\">\n     <g id=\"line2d_2\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"147.772159\" xlink:href=\"#me6157de1af\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_2\">\n      <!-- 1 -->\n      <g transform=\"translate(144.590909 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 12.40625 8.296875 \nL 28.515625 8.296875 \nL 28.515625 63.921875 \nL 10.984375 60.40625 \nL 10.984375 69.390625 \nL 28.421875 72.90625 \nL 38.28125 72.90625 \nL 38.28125 8.296875 \nL 54.390625 8.296875 \nL 54.390625 0 \nL 12.40625 0 \nz\n\" id=\"DejaVuSans-49\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-49\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_3\">\n     <g id=\"line2d_3\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"211.18125\" xlink:href=\"#me6157de1af\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_3\">\n      <!-- 2 -->\n      <g transform=\"translate(208 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 19.1875 8.296875 \nL 53.609375 8.296875 \nL 53.609375 0 \nL 7.328125 0 \nL 7.328125 8.296875 \nQ 12.9375 14.109375 22.625 23.890625 \nQ 32.328125 33.6875 34.8125 36.53125 \nQ 39.546875 41.84375 41.421875 45.53125 \nQ 43.3125 49.21875 43.3125 52.78125 \nQ 43.3125 58.59375 39.234375 62.25 \nQ 35.15625 65.921875 28.609375 65.921875 \nQ 23.96875 65.921875 18.8125 64.3125 \nQ 13.671875 62.703125 7.8125 59.421875 \nL 7.8125 69.390625 \nQ 13.765625 71.78125 18.9375 73 \nQ 24.125 74.21875 28.421875 74.21875 \nQ 39.75 74.21875 46.484375 68.546875 \nQ 53.21875 62.890625 53.21875 53.421875 \nQ 53.21875 48.921875 51.53125 44.890625 \nQ 49.859375 40.875 45.40625 35.40625 \nQ 44.1875 33.984375 37.640625 27.21875 \nQ 31.109375 20.453125 19.1875 8.296875 \nz\n\" id=\"DejaVuSans-50\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_4\">\n     <g id=\"line2d_4\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"274.590341\" xlink:href=\"#me6157de1af\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_4\">\n      <!-- 3 -->\n      <g transform=\"translate(271.409091 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 40.578125 39.3125 \nQ 47.65625 37.796875 51.625 33 \nQ 55.609375 28.21875 55.609375 21.1875 \nQ 55.609375 10.40625 48.1875 4.484375 \nQ 40.765625 -1.421875 27.09375 -1.421875 \nQ 22.515625 -1.421875 17.65625 -0.515625 \nQ 12.796875 0.390625 7.625 2.203125 \nL 7.625 11.71875 \nQ 11.71875 9.328125 16.59375 8.109375 \nQ 21.484375 6.890625 26.8125 6.890625 \nQ 36.078125 6.890625 40.9375 10.546875 \nQ 45.796875 14.203125 45.796875 21.1875 \nQ 45.796875 27.640625 41.28125 31.265625 \nQ 36.765625 34.90625 28.71875 34.90625 \nL 20.21875 34.90625 \nL 20.21875 43.015625 \nL 29.109375 43.015625 \nQ 36.375 43.015625 40.234375 45.921875 \nQ 44.09375 48.828125 44.09375 54.296875 \nQ 44.09375 59.90625 40.109375 62.90625 \nQ 36.140625 65.921875 28.71875 65.921875 \nQ 24.65625 65.921875 20.015625 65.03125 \nQ 15.375 64.15625 9.8125 62.3125 \nL 9.8125 71.09375 \nQ 15.4375 72.65625 20.34375 73.4375 \nQ 25.25 74.21875 29.59375 74.21875 \nQ 40.828125 74.21875 47.359375 69.109375 \nQ 53.90625 64.015625 53.90625 55.328125 \nQ 53.90625 49.265625 50.4375 45.09375 \nQ 46.96875 40.921875 40.578125 39.3125 \nz\n\" id=\"DejaVuSans-51\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-51\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_5\">\n     <g id=\"line2d_5\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"337.999432\" xlink:href=\"#me6157de1af\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_5\">\n      <!-- 4 -->\n      <g transform=\"translate(334.818182 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 37.796875 64.3125 \nL 12.890625 25.390625 \nL 37.796875 25.390625 \nz\nM 35.203125 72.90625 \nL 47.609375 72.90625 \nL 47.609375 25.390625 \nL 58.015625 25.390625 \nL 58.015625 17.1875 \nL 47.609375 17.1875 \nL 47.609375 0 \nL 37.796875 0 \nL 37.796875 17.1875 \nL 4.890625 17.1875 \nL 4.890625 26.703125 \nz\n\" id=\"DejaVuSans-52\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-52\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"text_6\">\n     <!-- Task -->\n     <g transform=\"translate(200.388281 268.034687)scale(0.1 -0.1)\">\n      <defs>\n       <path d=\"M -0.296875 72.90625 \nL 61.375 72.90625 \nL 61.375 64.59375 \nL 35.5 64.59375 \nL 35.5 0 \nL 25.59375 0 \nL 25.59375 64.59375 \nL -0.296875 64.59375 \nz\n\" id=\"DejaVuSans-84\"/>\n       <path d=\"M 34.28125 27.484375 \nQ 23.390625 27.484375 19.1875 25 \nQ 14.984375 22.515625 14.984375 16.5 \nQ 14.984375 11.71875 18.140625 8.90625 \nQ 21.296875 6.109375 26.703125 6.109375 \nQ 34.1875 6.109375 38.703125 11.40625 \nQ 43.21875 16.703125 43.21875 25.484375 \nL 43.21875 27.484375 \nz\nM 52.203125 31.203125 \nL 52.203125 0 \nL 43.21875 0 \nL 43.21875 8.296875 \nQ 40.140625 3.328125 35.546875 0.953125 \nQ 30.953125 -1.421875 24.3125 -1.421875 \nQ 15.921875 -1.421875 10.953125 3.296875 \nQ 6 8.015625 6 15.921875 \nQ 6 25.140625 12.171875 29.828125 \nQ 18.359375 34.515625 30.609375 34.515625 \nL 43.21875 34.515625 \nL 43.21875 35.40625 \nQ 43.21875 41.609375 39.140625 45 \nQ 35.0625 48.390625 27.6875 48.390625 \nQ 23 48.390625 18.546875 47.265625 \nQ 14.109375 46.140625 10.015625 43.890625 \nL 10.015625 52.203125 \nQ 14.9375 54.109375 19.578125 55.046875 \nQ 24.21875 56 28.609375 56 \nQ 40.484375 56 46.34375 49.84375 \nQ 52.203125 43.703125 52.203125 31.203125 \nz\n\" id=\"DejaVuSans-97\"/>\n       <path d=\"M 44.28125 53.078125 \nL 44.28125 44.578125 \nQ 40.484375 46.53125 36.375 47.5 \nQ 32.28125 48.484375 27.875 48.484375 \nQ 21.1875 48.484375 17.84375 46.4375 \nQ 14.5 44.390625 14.5 40.28125 \nQ 14.5 37.15625 16.890625 35.375 \nQ 19.28125 33.59375 26.515625 31.984375 \nL 29.59375 31.296875 \nQ 39.15625 29.25 43.1875 25.515625 \nQ 47.21875 21.78125 47.21875 15.09375 \nQ 47.21875 7.46875 41.1875 3.015625 \nQ 35.15625 -1.421875 24.609375 -1.421875 \nQ 20.21875 -1.421875 15.453125 -0.5625 \nQ 10.6875 0.296875 5.421875 2 \nL 5.421875 11.28125 \nQ 10.40625 8.6875 15.234375 7.390625 \nQ 20.0625 6.109375 24.8125 6.109375 \nQ 31.15625 6.109375 34.5625 8.28125 \nQ 37.984375 10.453125 37.984375 14.40625 \nQ 37.984375 18.0625 35.515625 20.015625 \nQ 33.0625 21.96875 24.703125 23.78125 \nL 21.578125 24.515625 \nQ 13.234375 26.265625 9.515625 29.90625 \nQ 5.8125 33.546875 5.8125 39.890625 \nQ 5.8125 47.609375 11.28125 51.796875 \nQ 16.75 56 26.8125 56 \nQ 31.78125 56 36.171875 55.265625 \nQ 40.578125 54.546875 44.28125 53.078125 \nz\n\" id=\"DejaVuSans-115\"/>\n       <path d=\"M 9.078125 75.984375 \nL 18.109375 75.984375 \nL 18.109375 31.109375 \nL 44.921875 54.6875 \nL 56.390625 54.6875 \nL 27.390625 29.109375 \nL 57.625 0 \nL 45.90625 0 \nL 18.109375 26.703125 \nL 18.109375 0 \nL 9.078125 0 \nz\n\" id=\"DejaVuSans-107\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-84\"/>\n      <use x=\"44.583984\" xlink:href=\"#DejaVuSans-97\"/>\n      <use x=\"105.863281\" xlink:href=\"#DejaVuSans-115\"/>\n      <use x=\"157.962891\" xlink:href=\"#DejaVuSans-107\"/>\n     </g>\n    </g>\n   </g>\n   <g id=\"matplotlib.axis_2\">\n    <g id=\"ytick_1\">\n     <g id=\"line2d_6\">\n      <defs>\n       <path d=\"M 0 0 \nL -3.5 0 \n\" id=\"m0e5382894a\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m0e5382894a\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_7\">\n      <!-- 0.0 -->\n      <g transform=\"translate(20.878125 243.557344)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 10.6875 12.40625 \nL 21 12.40625 \nL 21 0 \nL 10.6875 0 \nz\n\" id=\"DejaVuSans-46\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_2\">\n     <g id=\"line2d_7\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m0e5382894a\" y=\"196.270125\"/>\n      </g>\n     </g>\n     <g id=\"text_8\">\n      <!-- 0.2 -->\n      <g transform=\"translate(20.878125 200.069344)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_3\">\n     <g id=\"line2d_8\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m0e5382894a\" y=\"152.782125\"/>\n      </g>\n     </g>\n     <g id=\"text_9\">\n      <!-- 0.4 -->\n      <g transform=\"translate(20.878125 156.581344)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-52\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_4\">\n     <g id=\"line2d_9\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m0e5382894a\" y=\"109.294125\"/>\n      </g>\n     </g>\n     <g id=\"text_10\">\n      <!-- 0.6 -->\n      <g transform=\"translate(20.878125 113.093344)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 33.015625 40.375 \nQ 26.375 40.375 22.484375 35.828125 \nQ 18.609375 31.296875 18.609375 23.390625 \nQ 18.609375 15.53125 22.484375 10.953125 \nQ 26.375 6.390625 33.015625 6.390625 \nQ 39.65625 6.390625 43.53125 10.953125 \nQ 47.40625 15.53125 47.40625 23.390625 \nQ 47.40625 31.296875 43.53125 35.828125 \nQ 39.65625 40.375 33.015625 40.375 \nz\nM 52.59375 71.296875 \nL 52.59375 62.3125 \nQ 48.875 64.0625 45.09375 64.984375 \nQ 41.3125 65.921875 37.59375 65.921875 \nQ 27.828125 65.921875 22.671875 59.328125 \nQ 17.53125 52.734375 16.796875 39.40625 \nQ 19.671875 43.65625 24.015625 45.921875 \nQ 28.375 48.1875 33.59375 48.1875 \nQ 44.578125 48.1875 50.953125 41.515625 \nQ 57.328125 34.859375 57.328125 23.390625 \nQ 57.328125 12.15625 50.6875 5.359375 \nQ 44.046875 -1.421875 33.015625 -1.421875 \nQ 20.359375 -1.421875 13.671875 8.265625 \nQ 6.984375 17.96875 6.984375 36.375 \nQ 6.984375 53.65625 15.1875 63.9375 \nQ 23.390625 74.21875 37.203125 74.21875 \nQ 40.921875 74.21875 44.703125 73.484375 \nQ 48.484375 72.75 52.59375 71.296875 \nz\n\" id=\"DejaVuSans-54\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-54\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_5\">\n     <g id=\"line2d_10\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m0e5382894a\" y=\"65.806125\"/>\n      </g>\n     </g>\n     <g id=\"text_11\">\n      <!-- 0.8 -->\n      <g transform=\"translate(20.878125 69.605344)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 31.78125 34.625 \nQ 24.75 34.625 20.71875 30.859375 \nQ 16.703125 27.09375 16.703125 20.515625 \nQ 16.703125 13.921875 20.71875 10.15625 \nQ 24.75 6.390625 31.78125 6.390625 \nQ 38.8125 6.390625 42.859375 10.171875 \nQ 46.921875 13.96875 46.921875 20.515625 \nQ 46.921875 27.09375 42.890625 30.859375 \nQ 38.875 34.625 31.78125 34.625 \nz\nM 21.921875 38.8125 \nQ 15.578125 40.375 12.03125 44.71875 \nQ 8.5 49.078125 8.5 55.328125 \nQ 8.5 64.0625 14.71875 69.140625 \nQ 20.953125 74.21875 31.78125 74.21875 \nQ 42.671875 74.21875 48.875 69.140625 \nQ 55.078125 64.0625 55.078125 55.328125 \nQ 55.078125 49.078125 51.53125 44.71875 \nQ 48 40.375 41.703125 38.8125 \nQ 48.828125 37.15625 52.796875 32.3125 \nQ 56.78125 27.484375 56.78125 20.515625 \nQ 56.78125 9.90625 50.3125 4.234375 \nQ 43.84375 -1.421875 31.78125 -1.421875 \nQ 19.734375 -1.421875 13.25 4.234375 \nQ 6.78125 9.90625 6.78125 20.515625 \nQ 6.78125 27.484375 10.78125 32.3125 \nQ 14.796875 37.15625 21.921875 38.8125 \nz\nM 18.3125 54.390625 \nQ 18.3125 48.734375 21.84375 45.5625 \nQ 25.390625 42.390625 31.78125 42.390625 \nQ 38.140625 42.390625 41.71875 45.5625 \nQ 45.3125 48.734375 45.3125 54.390625 \nQ 45.3125 60.0625 41.71875 63.234375 \nQ 38.140625 66.40625 31.78125 66.40625 \nQ 25.390625 66.40625 21.84375 63.234375 \nQ 18.3125 60.0625 18.3125 54.390625 \nz\n\" id=\"DejaVuSans-56\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-56\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_6\">\n     <g id=\"line2d_11\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m0e5382894a\" y=\"22.318125\"/>\n      </g>\n     </g>\n     <g id=\"text_12\">\n      <!-- 1.0 -->\n      <g transform=\"translate(20.878125 26.117344)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"text_13\">\n     <!-- Accuracy -->\n     <g transform=\"translate(14.798438 153.86625)rotate(-90)scale(0.1 -0.1)\">\n      <defs>\n       <path d=\"M 34.1875 63.1875 \nL 20.796875 26.90625 \nL 47.609375 26.90625 \nz\nM 28.609375 72.90625 \nL 39.796875 72.90625 \nL 67.578125 0 \nL 57.328125 0 \nL 50.6875 18.703125 \nL 17.828125 18.703125 \nL 11.1875 0 \nL 0.78125 0 \nz\n\" id=\"DejaVuSans-65\"/>\n       <path d=\"M 48.78125 52.59375 \nL 48.78125 44.1875 \nQ 44.96875 46.296875 41.140625 47.34375 \nQ 37.3125 48.390625 33.40625 48.390625 \nQ 24.65625 48.390625 19.8125 42.84375 \nQ 14.984375 37.3125 14.984375 27.296875 \nQ 14.984375 17.28125 19.8125 11.734375 \nQ 24.65625 6.203125 33.40625 6.203125 \nQ 37.3125 6.203125 41.140625 7.25 \nQ 44.96875 8.296875 48.78125 10.40625 \nL 48.78125 2.09375 \nQ 45.015625 0.34375 40.984375 -0.53125 \nQ 36.96875 -1.421875 32.421875 -1.421875 \nQ 20.0625 -1.421875 12.78125 6.34375 \nQ 5.515625 14.109375 5.515625 27.296875 \nQ 5.515625 40.671875 12.859375 48.328125 \nQ 20.21875 56 33.015625 56 \nQ 37.15625 56 41.109375 55.140625 \nQ 45.0625 54.296875 48.78125 52.59375 \nz\n\" id=\"DejaVuSans-99\"/>\n       <path d=\"M 8.5 21.578125 \nL 8.5 54.6875 \nL 17.484375 54.6875 \nL 17.484375 21.921875 \nQ 17.484375 14.15625 20.5 10.265625 \nQ 23.53125 6.390625 29.59375 6.390625 \nQ 36.859375 6.390625 41.078125 11.03125 \nQ 45.3125 15.671875 45.3125 23.6875 \nL 45.3125 54.6875 \nL 54.296875 54.6875 \nL 54.296875 0 \nL 45.3125 0 \nL 45.3125 8.40625 \nQ 42.046875 3.421875 37.71875 1 \nQ 33.40625 -1.421875 27.6875 -1.421875 \nQ 18.265625 -1.421875 13.375 4.4375 \nQ 8.5 10.296875 8.5 21.578125 \nz\nM 31.109375 56 \nz\n\" id=\"DejaVuSans-117\"/>\n       <path d=\"M 41.109375 46.296875 \nQ 39.59375 47.171875 37.8125 47.578125 \nQ 36.03125 48 33.890625 48 \nQ 26.265625 48 22.1875 43.046875 \nQ 18.109375 38.09375 18.109375 28.8125 \nL 18.109375 0 \nL 9.078125 0 \nL 9.078125 54.6875 \nL 18.109375 54.6875 \nL 18.109375 46.1875 \nQ 20.953125 51.171875 25.484375 53.578125 \nQ 30.03125 56 36.53125 56 \nQ 37.453125 56 38.578125 55.875 \nQ 39.703125 55.765625 41.0625 55.515625 \nz\n\" id=\"DejaVuSans-114\"/>\n       <path d=\"M 32.171875 -5.078125 \nQ 28.375 -14.84375 24.75 -17.8125 \nQ 21.140625 -20.796875 15.09375 -20.796875 \nL 7.90625 -20.796875 \nL 7.90625 -13.28125 \nL 13.1875 -13.28125 \nQ 16.890625 -13.28125 18.9375 -11.515625 \nQ 21 -9.765625 23.484375 -3.21875 \nL 25.09375 0.875 \nL 2.984375 54.6875 \nL 12.5 54.6875 \nL 29.59375 11.921875 \nL 46.6875 54.6875 \nL 56.203125 54.6875 \nz\n\" id=\"DejaVuSans-121\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-65\"/>\n      <use x=\"66.658203\" xlink:href=\"#DejaVuSans-99\"/>\n      <use x=\"121.638672\" xlink:href=\"#DejaVuSans-99\"/>\n      <use x=\"176.619141\" xlink:href=\"#DejaVuSans-117\"/>\n      <use x=\"239.998047\" xlink:href=\"#DejaVuSans-114\"/>\n      <use x=\"281.111328\" xlink:href=\"#DejaVuSans-97\"/>\n      <use x=\"342.390625\" xlink:href=\"#DejaVuSans-99\"/>\n      <use x=\"397.371094\" xlink:href=\"#DejaVuSans-121\"/>\n     </g>\n    </g>\n   </g>\n   <g id=\"patch_8\">\n    <path d=\"M 43.78125 239.758125 \nL 43.78125 22.318125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_9\">\n    <path d=\"M 378.58125 239.758125 \nL 378.58125 22.318125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_10\">\n    <path d=\"M 43.78125 239.758125 \nL 378.58125 239.758125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_11\">\n    <path d=\"M 43.78125 22.318125 \nL 378.58125 22.318125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"text_14\">\n    <!-- 97% -->\n    <g transform=\"translate(73.249787 23.595078)scale(0.1 -0.1)\">\n     <defs>\n      <path d=\"M 10.984375 1.515625 \nL 10.984375 10.5 \nQ 14.703125 8.734375 18.5 7.8125 \nQ 22.3125 6.890625 25.984375 6.890625 \nQ 35.75 6.890625 40.890625 13.453125 \nQ 46.046875 20.015625 46.78125 33.40625 \nQ 43.953125 29.203125 39.59375 26.953125 \nQ 35.25 24.703125 29.984375 24.703125 \nQ 19.046875 24.703125 12.671875 31.3125 \nQ 6.296875 37.9375 6.296875 49.421875 \nQ 6.296875 60.640625 12.9375 67.421875 \nQ 19.578125 74.21875 30.609375 74.21875 \nQ 43.265625 74.21875 49.921875 64.515625 \nQ 56.59375 54.828125 56.59375 36.375 \nQ 56.59375 19.140625 48.40625 8.859375 \nQ 40.234375 -1.421875 26.421875 -1.421875 \nQ 22.703125 -1.421875 18.890625 -0.6875 \nQ 15.09375 0.046875 10.984375 1.515625 \nz\nM 30.609375 32.421875 \nQ 37.25 32.421875 41.125 36.953125 \nQ 45.015625 41.5 45.015625 49.421875 \nQ 45.015625 57.28125 41.125 61.84375 \nQ 37.25 66.40625 30.609375 66.40625 \nQ 23.96875 66.40625 20.09375 61.84375 \nQ 16.21875 57.28125 16.21875 49.421875 \nQ 16.21875 41.5 20.09375 36.953125 \nQ 23.96875 32.421875 30.609375 32.421875 \nz\n\" id=\"DejaVuSans-57\"/>\n      <path d=\"M 8.203125 72.90625 \nL 55.078125 72.90625 \nL 55.078125 68.703125 \nL 28.609375 0 \nL 18.3125 0 \nL 43.21875 64.59375 \nL 8.203125 64.59375 \nz\n\" id=\"DejaVuSans-55\"/>\n      <path d=\"M 72.703125 32.078125 \nQ 68.453125 32.078125 66.03125 28.46875 \nQ 63.625 24.859375 63.625 18.40625 \nQ 63.625 12.0625 66.03125 8.421875 \nQ 68.453125 4.78125 72.703125 4.78125 \nQ 76.859375 4.78125 79.265625 8.421875 \nQ 81.6875 12.0625 81.6875 18.40625 \nQ 81.6875 24.8125 79.265625 28.4375 \nQ 76.859375 32.078125 72.703125 32.078125 \nz\nM 72.703125 38.28125 \nQ 80.421875 38.28125 84.953125 32.90625 \nQ 89.5 27.546875 89.5 18.40625 \nQ 89.5 9.28125 84.9375 3.921875 \nQ 80.375 -1.421875 72.703125 -1.421875 \nQ 64.890625 -1.421875 60.34375 3.921875 \nQ 55.8125 9.28125 55.8125 18.40625 \nQ 55.8125 27.59375 60.375 32.9375 \nQ 64.9375 38.28125 72.703125 38.28125 \nz\nM 22.3125 68.015625 \nQ 18.109375 68.015625 15.6875 64.375 \nQ 13.28125 60.75 13.28125 54.390625 \nQ 13.28125 47.953125 15.671875 44.328125 \nQ 18.0625 40.71875 22.3125 40.71875 \nQ 26.5625 40.71875 28.96875 44.328125 \nQ 31.390625 47.953125 31.390625 54.390625 \nQ 31.390625 60.6875 28.953125 64.34375 \nQ 26.515625 68.015625 22.3125 68.015625 \nz\nM 66.40625 74.21875 \nL 74.21875 74.21875 \nL 28.609375 -1.421875 \nL 20.796875 -1.421875 \nz\nM 22.3125 74.21875 \nQ 30.03125 74.21875 34.609375 68.875 \nQ 39.203125 63.53125 39.203125 54.390625 \nQ 39.203125 45.171875 34.640625 39.84375 \nQ 30.078125 34.515625 22.3125 34.515625 \nQ 14.546875 34.515625 10.03125 39.859375 \nQ 5.515625 45.21875 5.515625 54.390625 \nQ 5.515625 63.484375 10.046875 68.84375 \nQ 14.59375 74.21875 22.3125 74.21875 \nz\n\" id=\"DejaVuSans-37\"/>\n     </defs>\n     <use xlink:href=\"#DejaVuSans-57\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-55\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_15\">\n    <!-- 71% -->\n    <g transform=\"translate(136.658878 80.65851)scale(0.1 -0.1)\">\n     <use xlink:href=\"#DejaVuSans-55\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-49\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_16\">\n    <!-- 88% -->\n    <g transform=\"translate(200.067969 43.32254)scale(0.1 -0.1)\">\n     <use xlink:href=\"#DejaVuSans-56\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-56\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_17\">\n    <!-- 99% -->\n    <g transform=\"translate(263.47706 19.50351)scale(0.1 -0.1)\">\n     <use xlink:href=\"#DejaVuSans-57\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-57\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_18\">\n    <!-- 98% -->\n    <g transform=\"translate(326.886151 20.855117)scale(0.1 -0.1)\">\n     <use xlink:href=\"#DejaVuSans-57\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-56\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_19\">\n    <!-- Task Accuracy -->\n    <g transform=\"translate(168.929063 16.318125)scale(0.12 -0.12)\">\n     <defs>\n      <path id=\"DejaVuSans-32\"/>\n     </defs>\n     <use xlink:href=\"#DejaVuSans-84\"/>\n     <use x=\"44.583984\" xlink:href=\"#DejaVuSans-97\"/>\n     <use x=\"105.863281\" xlink:href=\"#DejaVuSans-115\"/>\n     <use x=\"157.962891\" xlink:href=\"#DejaVuSans-107\"/>\n     <use x=\"215.873047\" xlink:href=\"#DejaVuSans-32\"/>\n     <use x=\"247.660156\" xlink:href=\"#DejaVuSans-65\"/>\n     <use x=\"314.318359\" xlink:href=\"#DejaVuSans-99\"/>\n     <use x=\"369.298828\" xlink:href=\"#DejaVuSans-99\"/>\n     <use x=\"424.279297\" xlink:href=\"#DejaVuSans-117\"/>\n     <use x=\"487.658203\" xlink:href=\"#DejaVuSans-114\"/>\n     <use x=\"528.771484\" xlink:href=\"#DejaVuSans-97\"/>\n     <use x=\"590.050781\" xlink:href=\"#DejaVuSans-99\"/>\n     <use x=\"645.03125\" xlink:href=\"#DejaVuSans-121\"/>\n    </g>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"p41c9b441b6\">\n   <rect height=\"217.44\" width=\"334.8\" x=\"43.78125\" y=\"22.318125\"/>\n  </clipPath>\n </defs>\n</svg>\n",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "source": [
    "improved_results.make_plots()"
   ]
  },
  {
   "source": [
    "## Final Results\n"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "{'task_metrics': <Figure size 432x288 with 1 Axes>}"
      ]
     },
     "metadata": {},
     "execution_count": 13
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Created with matplotlib (https://matplotlib.org/) -->\n<svg height=\"277.314375pt\" version=\"1.1\" viewBox=\"0 0 385.78125 277.314375\" width=\"385.78125pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <metadata>\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n   <cc:Work>\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n    <dc:date>2021-02-25T17:30:07.489874</dc:date>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:creator>\n     <cc:Agent>\n      <dc:title>Matplotlib v3.3.4, https://matplotlib.org/</dc:title>\n     </cc:Agent>\n    </dc:creator>\n   </cc:Work>\n  </rdf:RDF>\n </metadata>\n <defs>\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M 0 277.314375 \nL 385.78125 277.314375 \nL 385.78125 0 \nL 0 0 \nz\n\" style=\"fill:none;\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g id=\"patch_2\">\n    <path d=\"M 43.78125 239.758125 \nL 378.58125 239.758125 \nL 378.58125 22.318125 \nL 43.78125 22.318125 \nz\n\" style=\"fill:#ffffff;\"/>\n   </g>\n   <g id=\"patch_3\">\n    <path clip-path=\"url(#p7ae5f5802d)\" d=\"M 58.999432 239.758125 \nL 109.726705 239.758125 \nL 109.726705 122.818458 \nL 58.999432 122.818458 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_4\">\n    <path clip-path=\"url(#p7ae5f5802d)\" d=\"M 122.408523 239.758125 \nL 173.135795 239.758125 \nL 173.135795 120.252449 \nL 122.408523 120.252449 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_5\">\n    <path clip-path=\"url(#p7ae5f5802d)\" d=\"M 185.817614 239.758125 \nL 236.544886 239.758125 \nL 236.544886 39.963164 \nL 185.817614 39.963164 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_6\">\n    <path clip-path=\"url(#p7ae5f5802d)\" d=\"M 249.226705 239.758125 \nL 299.953977 239.758125 \nL 299.953977 23.612328 \nL 249.226705 23.612328 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_7\">\n    <path clip-path=\"url(#p7ae5f5802d)\" d=\"M 312.635795 239.758125 \nL 363.363068 239.758125 \nL 363.363068 23.304433 \nL 312.635795 23.304433 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"matplotlib.axis_1\">\n    <g id=\"xtick_1\">\n     <g id=\"line2d_1\">\n      <defs>\n       <path d=\"M 0 0 \nL 0 3.5 \n\" id=\"m7725b068bf\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"84.363068\" xlink:href=\"#m7725b068bf\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_1\">\n      <!-- 0 -->\n      <g transform=\"translate(81.181818 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 31.78125 66.40625 \nQ 24.171875 66.40625 20.328125 58.90625 \nQ 16.5 51.421875 16.5 36.375 \nQ 16.5 21.390625 20.328125 13.890625 \nQ 24.171875 6.390625 31.78125 6.390625 \nQ 39.453125 6.390625 43.28125 13.890625 \nQ 47.125 21.390625 47.125 36.375 \nQ 47.125 51.421875 43.28125 58.90625 \nQ 39.453125 66.40625 31.78125 66.40625 \nz\nM 31.78125 74.21875 \nQ 44.046875 74.21875 50.515625 64.515625 \nQ 56.984375 54.828125 56.984375 36.375 \nQ 56.984375 17.96875 50.515625 8.265625 \nQ 44.046875 -1.421875 31.78125 -1.421875 \nQ 19.53125 -1.421875 13.0625 8.265625 \nQ 6.59375 17.96875 6.59375 36.375 \nQ 6.59375 54.828125 13.0625 64.515625 \nQ 19.53125 74.21875 31.78125 74.21875 \nz\n\" id=\"DejaVuSans-48\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_2\">\n     <g id=\"line2d_2\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"147.772159\" xlink:href=\"#m7725b068bf\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_2\">\n      <!-- 1 -->\n      <g transform=\"translate(144.590909 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 12.40625 8.296875 \nL 28.515625 8.296875 \nL 28.515625 63.921875 \nL 10.984375 60.40625 \nL 10.984375 69.390625 \nL 28.421875 72.90625 \nL 38.28125 72.90625 \nL 38.28125 8.296875 \nL 54.390625 8.296875 \nL 54.390625 0 \nL 12.40625 0 \nz\n\" id=\"DejaVuSans-49\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-49\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_3\">\n     <g id=\"line2d_3\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"211.18125\" xlink:href=\"#m7725b068bf\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_3\">\n      <!-- 2 -->\n      <g transform=\"translate(208 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 19.1875 8.296875 \nL 53.609375 8.296875 \nL 53.609375 0 \nL 7.328125 0 \nL 7.328125 8.296875 \nQ 12.9375 14.109375 22.625 23.890625 \nQ 32.328125 33.6875 34.8125 36.53125 \nQ 39.546875 41.84375 41.421875 45.53125 \nQ 43.3125 49.21875 43.3125 52.78125 \nQ 43.3125 58.59375 39.234375 62.25 \nQ 35.15625 65.921875 28.609375 65.921875 \nQ 23.96875 65.921875 18.8125 64.3125 \nQ 13.671875 62.703125 7.8125 59.421875 \nL 7.8125 69.390625 \nQ 13.765625 71.78125 18.9375 73 \nQ 24.125 74.21875 28.421875 74.21875 \nQ 39.75 74.21875 46.484375 68.546875 \nQ 53.21875 62.890625 53.21875 53.421875 \nQ 53.21875 48.921875 51.53125 44.890625 \nQ 49.859375 40.875 45.40625 35.40625 \nQ 44.1875 33.984375 37.640625 27.21875 \nQ 31.109375 20.453125 19.1875 8.296875 \nz\n\" id=\"DejaVuSans-50\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_4\">\n     <g id=\"line2d_4\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"274.590341\" xlink:href=\"#m7725b068bf\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_4\">\n      <!-- 3 -->\n      <g transform=\"translate(271.409091 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 40.578125 39.3125 \nQ 47.65625 37.796875 51.625 33 \nQ 55.609375 28.21875 55.609375 21.1875 \nQ 55.609375 10.40625 48.1875 4.484375 \nQ 40.765625 -1.421875 27.09375 -1.421875 \nQ 22.515625 -1.421875 17.65625 -0.515625 \nQ 12.796875 0.390625 7.625 2.203125 \nL 7.625 11.71875 \nQ 11.71875 9.328125 16.59375 8.109375 \nQ 21.484375 6.890625 26.8125 6.890625 \nQ 36.078125 6.890625 40.9375 10.546875 \nQ 45.796875 14.203125 45.796875 21.1875 \nQ 45.796875 27.640625 41.28125 31.265625 \nQ 36.765625 34.90625 28.71875 34.90625 \nL 20.21875 34.90625 \nL 20.21875 43.015625 \nL 29.109375 43.015625 \nQ 36.375 43.015625 40.234375 45.921875 \nQ 44.09375 48.828125 44.09375 54.296875 \nQ 44.09375 59.90625 40.109375 62.90625 \nQ 36.140625 65.921875 28.71875 65.921875 \nQ 24.65625 65.921875 20.015625 65.03125 \nQ 15.375 64.15625 9.8125 62.3125 \nL 9.8125 71.09375 \nQ 15.4375 72.65625 20.34375 73.4375 \nQ 25.25 74.21875 29.59375 74.21875 \nQ 40.828125 74.21875 47.359375 69.109375 \nQ 53.90625 64.015625 53.90625 55.328125 \nQ 53.90625 49.265625 50.4375 45.09375 \nQ 46.96875 40.921875 40.578125 39.3125 \nz\n\" id=\"DejaVuSans-51\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-51\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_5\">\n     <g id=\"line2d_5\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"337.999432\" xlink:href=\"#m7725b068bf\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_5\">\n      <!-- 4 -->\n      <g transform=\"translate(334.818182 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 37.796875 64.3125 \nL 12.890625 25.390625 \nL 37.796875 25.390625 \nz\nM 35.203125 72.90625 \nL 47.609375 72.90625 \nL 47.609375 25.390625 \nL 58.015625 25.390625 \nL 58.015625 17.1875 \nL 47.609375 17.1875 \nL 47.609375 0 \nL 37.796875 0 \nL 37.796875 17.1875 \nL 4.890625 17.1875 \nL 4.890625 26.703125 \nz\n\" id=\"DejaVuSans-52\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-52\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"text_6\">\n     <!-- Task -->\n     <g transform=\"translate(200.388281 268.034687)scale(0.1 -0.1)\">\n      <defs>\n       <path d=\"M -0.296875 72.90625 \nL 61.375 72.90625 \nL 61.375 64.59375 \nL 35.5 64.59375 \nL 35.5 0 \nL 25.59375 0 \nL 25.59375 64.59375 \nL -0.296875 64.59375 \nz\n\" id=\"DejaVuSans-84\"/>\n       <path d=\"M 34.28125 27.484375 \nQ 23.390625 27.484375 19.1875 25 \nQ 14.984375 22.515625 14.984375 16.5 \nQ 14.984375 11.71875 18.140625 8.90625 \nQ 21.296875 6.109375 26.703125 6.109375 \nQ 34.1875 6.109375 38.703125 11.40625 \nQ 43.21875 16.703125 43.21875 25.484375 \nL 43.21875 27.484375 \nz\nM 52.203125 31.203125 \nL 52.203125 0 \nL 43.21875 0 \nL 43.21875 8.296875 \nQ 40.140625 3.328125 35.546875 0.953125 \nQ 30.953125 -1.421875 24.3125 -1.421875 \nQ 15.921875 -1.421875 10.953125 3.296875 \nQ 6 8.015625 6 15.921875 \nQ 6 25.140625 12.171875 29.828125 \nQ 18.359375 34.515625 30.609375 34.515625 \nL 43.21875 34.515625 \nL 43.21875 35.40625 \nQ 43.21875 41.609375 39.140625 45 \nQ 35.0625 48.390625 27.6875 48.390625 \nQ 23 48.390625 18.546875 47.265625 \nQ 14.109375 46.140625 10.015625 43.890625 \nL 10.015625 52.203125 \nQ 14.9375 54.109375 19.578125 55.046875 \nQ 24.21875 56 28.609375 56 \nQ 40.484375 56 46.34375 49.84375 \nQ 52.203125 43.703125 52.203125 31.203125 \nz\n\" id=\"DejaVuSans-97\"/>\n       <path d=\"M 44.28125 53.078125 \nL 44.28125 44.578125 \nQ 40.484375 46.53125 36.375 47.5 \nQ 32.28125 48.484375 27.875 48.484375 \nQ 21.1875 48.484375 17.84375 46.4375 \nQ 14.5 44.390625 14.5 40.28125 \nQ 14.5 37.15625 16.890625 35.375 \nQ 19.28125 33.59375 26.515625 31.984375 \nL 29.59375 31.296875 \nQ 39.15625 29.25 43.1875 25.515625 \nQ 47.21875 21.78125 47.21875 15.09375 \nQ 47.21875 7.46875 41.1875 3.015625 \nQ 35.15625 -1.421875 24.609375 -1.421875 \nQ 20.21875 -1.421875 15.453125 -0.5625 \nQ 10.6875 0.296875 5.421875 2 \nL 5.421875 11.28125 \nQ 10.40625 8.6875 15.234375 7.390625 \nQ 20.0625 6.109375 24.8125 6.109375 \nQ 31.15625 6.109375 34.5625 8.28125 \nQ 37.984375 10.453125 37.984375 14.40625 \nQ 37.984375 18.0625 35.515625 20.015625 \nQ 33.0625 21.96875 24.703125 23.78125 \nL 21.578125 24.515625 \nQ 13.234375 26.265625 9.515625 29.90625 \nQ 5.8125 33.546875 5.8125 39.890625 \nQ 5.8125 47.609375 11.28125 51.796875 \nQ 16.75 56 26.8125 56 \nQ 31.78125 56 36.171875 55.265625 \nQ 40.578125 54.546875 44.28125 53.078125 \nz\n\" id=\"DejaVuSans-115\"/>\n       <path d=\"M 9.078125 75.984375 \nL 18.109375 75.984375 \nL 18.109375 31.109375 \nL 44.921875 54.6875 \nL 56.390625 54.6875 \nL 27.390625 29.109375 \nL 57.625 0 \nL 45.90625 0 \nL 18.109375 26.703125 \nL 18.109375 0 \nL 9.078125 0 \nz\n\" id=\"DejaVuSans-107\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-84\"/>\n      <use x=\"44.583984\" xlink:href=\"#DejaVuSans-97\"/>\n      <use x=\"105.863281\" xlink:href=\"#DejaVuSans-115\"/>\n      <use x=\"157.962891\" xlink:href=\"#DejaVuSans-107\"/>\n     </g>\n    </g>\n   </g>\n   <g id=\"matplotlib.axis_2\">\n    <g id=\"ytick_1\">\n     <g id=\"line2d_6\">\n      <defs>\n       <path d=\"M 0 0 \nL -3.5 0 \n\" id=\"m41ff687a35\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m41ff687a35\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_7\">\n      <!-- 0.0 -->\n      <g transform=\"translate(20.878125 243.557344)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 10.6875 12.40625 \nL 21 12.40625 \nL 21 0 \nL 10.6875 0 \nz\n\" id=\"DejaVuSans-46\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_2\">\n     <g id=\"line2d_7\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m41ff687a35\" y=\"196.270125\"/>\n      </g>\n     </g>\n     <g id=\"text_8\">\n      <!-- 0.2 -->\n      <g transform=\"translate(20.878125 200.069344)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_3\">\n     <g id=\"line2d_8\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m41ff687a35\" y=\"152.782125\"/>\n      </g>\n     </g>\n     <g id=\"text_9\">\n      <!-- 0.4 -->\n      <g transform=\"translate(20.878125 156.581344)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-52\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_4\">\n     <g id=\"line2d_9\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m41ff687a35\" y=\"109.294125\"/>\n      </g>\n     </g>\n     <g id=\"text_10\">\n      <!-- 0.6 -->\n      <g transform=\"translate(20.878125 113.093344)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 33.015625 40.375 \nQ 26.375 40.375 22.484375 35.828125 \nQ 18.609375 31.296875 18.609375 23.390625 \nQ 18.609375 15.53125 22.484375 10.953125 \nQ 26.375 6.390625 33.015625 6.390625 \nQ 39.65625 6.390625 43.53125 10.953125 \nQ 47.40625 15.53125 47.40625 23.390625 \nQ 47.40625 31.296875 43.53125 35.828125 \nQ 39.65625 40.375 33.015625 40.375 \nz\nM 52.59375 71.296875 \nL 52.59375 62.3125 \nQ 48.875 64.0625 45.09375 64.984375 \nQ 41.3125 65.921875 37.59375 65.921875 \nQ 27.828125 65.921875 22.671875 59.328125 \nQ 17.53125 52.734375 16.796875 39.40625 \nQ 19.671875 43.65625 24.015625 45.921875 \nQ 28.375 48.1875 33.59375 48.1875 \nQ 44.578125 48.1875 50.953125 41.515625 \nQ 57.328125 34.859375 57.328125 23.390625 \nQ 57.328125 12.15625 50.6875 5.359375 \nQ 44.046875 -1.421875 33.015625 -1.421875 \nQ 20.359375 -1.421875 13.671875 8.265625 \nQ 6.984375 17.96875 6.984375 36.375 \nQ 6.984375 53.65625 15.1875 63.9375 \nQ 23.390625 74.21875 37.203125 74.21875 \nQ 40.921875 74.21875 44.703125 73.484375 \nQ 48.484375 72.75 52.59375 71.296875 \nz\n\" id=\"DejaVuSans-54\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-54\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_5\">\n     <g id=\"line2d_10\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m41ff687a35\" y=\"65.806125\"/>\n      </g>\n     </g>\n     <g id=\"text_11\">\n      <!-- 0.8 -->\n      <g transform=\"translate(20.878125 69.605344)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 31.78125 34.625 \nQ 24.75 34.625 20.71875 30.859375 \nQ 16.703125 27.09375 16.703125 20.515625 \nQ 16.703125 13.921875 20.71875 10.15625 \nQ 24.75 6.390625 31.78125 6.390625 \nQ 38.8125 6.390625 42.859375 10.171875 \nQ 46.921875 13.96875 46.921875 20.515625 \nQ 46.921875 27.09375 42.890625 30.859375 \nQ 38.875 34.625 31.78125 34.625 \nz\nM 21.921875 38.8125 \nQ 15.578125 40.375 12.03125 44.71875 \nQ 8.5 49.078125 8.5 55.328125 \nQ 8.5 64.0625 14.71875 69.140625 \nQ 20.953125 74.21875 31.78125 74.21875 \nQ 42.671875 74.21875 48.875 69.140625 \nQ 55.078125 64.0625 55.078125 55.328125 \nQ 55.078125 49.078125 51.53125 44.71875 \nQ 48 40.375 41.703125 38.8125 \nQ 48.828125 37.15625 52.796875 32.3125 \nQ 56.78125 27.484375 56.78125 20.515625 \nQ 56.78125 9.90625 50.3125 4.234375 \nQ 43.84375 -1.421875 31.78125 -1.421875 \nQ 19.734375 -1.421875 13.25 4.234375 \nQ 6.78125 9.90625 6.78125 20.515625 \nQ 6.78125 27.484375 10.78125 32.3125 \nQ 14.796875 37.15625 21.921875 38.8125 \nz\nM 18.3125 54.390625 \nQ 18.3125 48.734375 21.84375 45.5625 \nQ 25.390625 42.390625 31.78125 42.390625 \nQ 38.140625 42.390625 41.71875 45.5625 \nQ 45.3125 48.734375 45.3125 54.390625 \nQ 45.3125 60.0625 41.71875 63.234375 \nQ 38.140625 66.40625 31.78125 66.40625 \nQ 25.390625 66.40625 21.84375 63.234375 \nQ 18.3125 60.0625 18.3125 54.390625 \nz\n\" id=\"DejaVuSans-56\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-56\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_6\">\n     <g id=\"line2d_11\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m41ff687a35\" y=\"22.318125\"/>\n      </g>\n     </g>\n     <g id=\"text_12\">\n      <!-- 1.0 -->\n      <g transform=\"translate(20.878125 26.117344)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"text_13\">\n     <!-- Accuracy -->\n     <g transform=\"translate(14.798438 153.86625)rotate(-90)scale(0.1 -0.1)\">\n      <defs>\n       <path d=\"M 34.1875 63.1875 \nL 20.796875 26.90625 \nL 47.609375 26.90625 \nz\nM 28.609375 72.90625 \nL 39.796875 72.90625 \nL 67.578125 0 \nL 57.328125 0 \nL 50.6875 18.703125 \nL 17.828125 18.703125 \nL 11.1875 0 \nL 0.78125 0 \nz\n\" id=\"DejaVuSans-65\"/>\n       <path d=\"M 48.78125 52.59375 \nL 48.78125 44.1875 \nQ 44.96875 46.296875 41.140625 47.34375 \nQ 37.3125 48.390625 33.40625 48.390625 \nQ 24.65625 48.390625 19.8125 42.84375 \nQ 14.984375 37.3125 14.984375 27.296875 \nQ 14.984375 17.28125 19.8125 11.734375 \nQ 24.65625 6.203125 33.40625 6.203125 \nQ 37.3125 6.203125 41.140625 7.25 \nQ 44.96875 8.296875 48.78125 10.40625 \nL 48.78125 2.09375 \nQ 45.015625 0.34375 40.984375 -0.53125 \nQ 36.96875 -1.421875 32.421875 -1.421875 \nQ 20.0625 -1.421875 12.78125 6.34375 \nQ 5.515625 14.109375 5.515625 27.296875 \nQ 5.515625 40.671875 12.859375 48.328125 \nQ 20.21875 56 33.015625 56 \nQ 37.15625 56 41.109375 55.140625 \nQ 45.0625 54.296875 48.78125 52.59375 \nz\n\" id=\"DejaVuSans-99\"/>\n       <path d=\"M 8.5 21.578125 \nL 8.5 54.6875 \nL 17.484375 54.6875 \nL 17.484375 21.921875 \nQ 17.484375 14.15625 20.5 10.265625 \nQ 23.53125 6.390625 29.59375 6.390625 \nQ 36.859375 6.390625 41.078125 11.03125 \nQ 45.3125 15.671875 45.3125 23.6875 \nL 45.3125 54.6875 \nL 54.296875 54.6875 \nL 54.296875 0 \nL 45.3125 0 \nL 45.3125 8.40625 \nQ 42.046875 3.421875 37.71875 1 \nQ 33.40625 -1.421875 27.6875 -1.421875 \nQ 18.265625 -1.421875 13.375 4.4375 \nQ 8.5 10.296875 8.5 21.578125 \nz\nM 31.109375 56 \nz\n\" id=\"DejaVuSans-117\"/>\n       <path d=\"M 41.109375 46.296875 \nQ 39.59375 47.171875 37.8125 47.578125 \nQ 36.03125 48 33.890625 48 \nQ 26.265625 48 22.1875 43.046875 \nQ 18.109375 38.09375 18.109375 28.8125 \nL 18.109375 0 \nL 9.078125 0 \nL 9.078125 54.6875 \nL 18.109375 54.6875 \nL 18.109375 46.1875 \nQ 20.953125 51.171875 25.484375 53.578125 \nQ 30.03125 56 36.53125 56 \nQ 37.453125 56 38.578125 55.875 \nQ 39.703125 55.765625 41.0625 55.515625 \nz\n\" id=\"DejaVuSans-114\"/>\n       <path d=\"M 32.171875 -5.078125 \nQ 28.375 -14.84375 24.75 -17.8125 \nQ 21.140625 -20.796875 15.09375 -20.796875 \nL 7.90625 -20.796875 \nL 7.90625 -13.28125 \nL 13.1875 -13.28125 \nQ 16.890625 -13.28125 18.9375 -11.515625 \nQ 21 -9.765625 23.484375 -3.21875 \nL 25.09375 0.875 \nL 2.984375 54.6875 \nL 12.5 54.6875 \nL 29.59375 11.921875 \nL 46.6875 54.6875 \nL 56.203125 54.6875 \nz\n\" id=\"DejaVuSans-121\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-65\"/>\n      <use x=\"66.658203\" xlink:href=\"#DejaVuSans-99\"/>\n      <use x=\"121.638672\" xlink:href=\"#DejaVuSans-99\"/>\n      <use x=\"176.619141\" xlink:href=\"#DejaVuSans-117\"/>\n      <use x=\"239.998047\" xlink:href=\"#DejaVuSans-114\"/>\n      <use x=\"281.111328\" xlink:href=\"#DejaVuSans-97\"/>\n      <use x=\"342.390625\" xlink:href=\"#DejaVuSans-99\"/>\n      <use x=\"397.371094\" xlink:href=\"#DejaVuSans-121\"/>\n     </g>\n    </g>\n   </g>\n   <g id=\"patch_8\">\n    <path d=\"M 43.78125 239.758125 \nL 43.78125 22.318125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_9\">\n    <path d=\"M 378.58125 239.758125 \nL 378.58125 22.318125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_10\">\n    <path d=\"M 43.78125 239.758125 \nL 378.58125 239.758125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_11\">\n    <path d=\"M 43.78125 22.318125 \nL 378.58125 22.318125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"text_14\">\n    <!-- 54% -->\n    <g transform=\"translate(73.249787 117.738771)scale(0.1 -0.1)\">\n     <defs>\n      <path d=\"M 10.796875 72.90625 \nL 49.515625 72.90625 \nL 49.515625 64.59375 \nL 19.828125 64.59375 \nL 19.828125 46.734375 \nQ 21.96875 47.46875 24.109375 47.828125 \nQ 26.265625 48.1875 28.421875 48.1875 \nQ 40.625 48.1875 47.75 41.5 \nQ 54.890625 34.8125 54.890625 23.390625 \nQ 54.890625 11.625 47.5625 5.09375 \nQ 40.234375 -1.421875 26.90625 -1.421875 \nQ 22.3125 -1.421875 17.546875 -0.640625 \nQ 12.796875 0.140625 7.71875 1.703125 \nL 7.71875 11.625 \nQ 12.109375 9.234375 16.796875 8.0625 \nQ 21.484375 6.890625 26.703125 6.890625 \nQ 35.15625 6.890625 40.078125 11.328125 \nQ 45.015625 15.765625 45.015625 23.390625 \nQ 45.015625 31 40.078125 35.4375 \nQ 35.15625 39.890625 26.703125 39.890625 \nQ 22.75 39.890625 18.8125 39.015625 \nQ 14.890625 38.140625 10.796875 36.28125 \nz\n\" id=\"DejaVuSans-53\"/>\n      <path d=\"M 72.703125 32.078125 \nQ 68.453125 32.078125 66.03125 28.46875 \nQ 63.625 24.859375 63.625 18.40625 \nQ 63.625 12.0625 66.03125 8.421875 \nQ 68.453125 4.78125 72.703125 4.78125 \nQ 76.859375 4.78125 79.265625 8.421875 \nQ 81.6875 12.0625 81.6875 18.40625 \nQ 81.6875 24.8125 79.265625 28.4375 \nQ 76.859375 32.078125 72.703125 32.078125 \nz\nM 72.703125 38.28125 \nQ 80.421875 38.28125 84.953125 32.90625 \nQ 89.5 27.546875 89.5 18.40625 \nQ 89.5 9.28125 84.9375 3.921875 \nQ 80.375 -1.421875 72.703125 -1.421875 \nQ 64.890625 -1.421875 60.34375 3.921875 \nQ 55.8125 9.28125 55.8125 18.40625 \nQ 55.8125 27.59375 60.375 32.9375 \nQ 64.9375 38.28125 72.703125 38.28125 \nz\nM 22.3125 68.015625 \nQ 18.109375 68.015625 15.6875 64.375 \nQ 13.28125 60.75 13.28125 54.390625 \nQ 13.28125 47.953125 15.671875 44.328125 \nQ 18.0625 40.71875 22.3125 40.71875 \nQ 26.5625 40.71875 28.96875 44.328125 \nQ 31.390625 47.953125 31.390625 54.390625 \nQ 31.390625 60.6875 28.953125 64.34375 \nQ 26.515625 68.015625 22.3125 68.015625 \nz\nM 66.40625 74.21875 \nL 74.21875 74.21875 \nL 28.609375 -1.421875 \nL 20.796875 -1.421875 \nz\nM 22.3125 74.21875 \nQ 30.03125 74.21875 34.609375 68.875 \nQ 39.203125 63.53125 39.203125 54.390625 \nQ 39.203125 45.171875 34.640625 39.84375 \nQ 30.078125 34.515625 22.3125 34.515625 \nQ 14.546875 34.515625 10.03125 39.859375 \nQ 5.515625 45.21875 5.515625 54.390625 \nQ 5.515625 63.484375 10.046875 68.84375 \nQ 14.59375 74.21875 22.3125 74.21875 \nz\n\" id=\"DejaVuSans-37\"/>\n     </defs>\n     <use xlink:href=\"#DejaVuSans-53\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-52\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_15\">\n    <!-- 55% -->\n    <g transform=\"translate(136.658878 115.172761)scale(0.1 -0.1)\">\n     <use xlink:href=\"#DejaVuSans-53\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_16\">\n    <!-- 92% -->\n    <g transform=\"translate(200.067969 34.883476)scale(0.1 -0.1)\">\n     <defs>\n      <path d=\"M 10.984375 1.515625 \nL 10.984375 10.5 \nQ 14.703125 8.734375 18.5 7.8125 \nQ 22.3125 6.890625 25.984375 6.890625 \nQ 35.75 6.890625 40.890625 13.453125 \nQ 46.046875 20.015625 46.78125 33.40625 \nQ 43.953125 29.203125 39.59375 26.953125 \nQ 35.25 24.703125 29.984375 24.703125 \nQ 19.046875 24.703125 12.671875 31.3125 \nQ 6.296875 37.9375 6.296875 49.421875 \nQ 6.296875 60.640625 12.9375 67.421875 \nQ 19.578125 74.21875 30.609375 74.21875 \nQ 43.265625 74.21875 49.921875 64.515625 \nQ 56.59375 54.828125 56.59375 36.375 \nQ 56.59375 19.140625 48.40625 8.859375 \nQ 40.234375 -1.421875 26.421875 -1.421875 \nQ 22.703125 -1.421875 18.890625 -0.6875 \nQ 15.09375 0.046875 10.984375 1.515625 \nz\nM 30.609375 32.421875 \nQ 37.25 32.421875 41.125 36.953125 \nQ 45.015625 41.5 45.015625 49.421875 \nQ 45.015625 57.28125 41.125 61.84375 \nQ 37.25 66.40625 30.609375 66.40625 \nQ 23.96875 66.40625 20.09375 61.84375 \nQ 16.21875 57.28125 16.21875 49.421875 \nQ 16.21875 41.5 20.09375 36.953125 \nQ 23.96875 32.421875 30.609375 32.421875 \nz\n\" id=\"DejaVuSans-57\"/>\n     </defs>\n     <use xlink:href=\"#DejaVuSans-57\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-50\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_17\">\n    <!-- 99% -->\n    <g transform=\"translate(263.47706 18.53264)scale(0.1 -0.1)\">\n     <use xlink:href=\"#DejaVuSans-57\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-57\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_18\">\n    <!-- 100% -->\n    <g transform=\"translate(323.704901 18.224745)scale(0.1 -0.1)\">\n     <use xlink:href=\"#DejaVuSans-49\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n     <use x=\"190.869141\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_19\">\n    <!-- Task Accuracy -->\n    <g transform=\"translate(168.929063 16.318125)scale(0.12 -0.12)\">\n     <defs>\n      <path id=\"DejaVuSans-32\"/>\n     </defs>\n     <use xlink:href=\"#DejaVuSans-84\"/>\n     <use x=\"44.583984\" xlink:href=\"#DejaVuSans-97\"/>\n     <use x=\"105.863281\" xlink:href=\"#DejaVuSans-115\"/>\n     <use x=\"157.962891\" xlink:href=\"#DejaVuSans-107\"/>\n     <use x=\"215.873047\" xlink:href=\"#DejaVuSans-32\"/>\n     <use x=\"247.660156\" xlink:href=\"#DejaVuSans-65\"/>\n     <use x=\"314.318359\" xlink:href=\"#DejaVuSans-99\"/>\n     <use x=\"369.298828\" xlink:href=\"#DejaVuSans-99\"/>\n     <use x=\"424.279297\" xlink:href=\"#DejaVuSans-117\"/>\n     <use x=\"487.658203\" xlink:href=\"#DejaVuSans-114\"/>\n     <use x=\"528.771484\" xlink:href=\"#DejaVuSans-97\"/>\n     <use x=\"590.050781\" xlink:href=\"#DejaVuSans-99\"/>\n     <use x=\"645.03125\" xlink:href=\"#DejaVuSans-121\"/>\n    </g>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"p7ae5f5802d\">\n   <rect height=\"217.44\" width=\"334.8\" x=\"43.78125\" y=\"22.318125\"/>\n  </clipPath>\n </defs>\n</svg>\n",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Created with matplotlib (https://matplotlib.org/) -->\n<svg height=\"277.314375pt\" version=\"1.1\" viewBox=\"0 0 385.78125 277.314375\" width=\"385.78125pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <metadata>\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n   <cc:Work>\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n    <dc:date>2021-02-25T17:30:07.601652</dc:date>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:creator>\n     <cc:Agent>\n      <dc:title>Matplotlib v3.3.4, https://matplotlib.org/</dc:title>\n     </cc:Agent>\n    </dc:creator>\n   </cc:Work>\n  </rdf:RDF>\n </metadata>\n <defs>\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M 0 277.314375 \nL 385.78125 277.314375 \nL 385.78125 0 \nL 0 0 \nz\n\" style=\"fill:none;\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g id=\"patch_2\">\n    <path d=\"M 43.78125 239.758125 \nL 378.58125 239.758125 \nL 378.58125 22.318125 \nL 43.78125 22.318125 \nz\n\" style=\"fill:#ffffff;\"/>\n   </g>\n   <g id=\"patch_3\">\n    <path clip-path=\"url(#p5b6ae91fee)\" d=\"M 58.999432 239.758125 \nL 109.726705 239.758125 \nL 109.726705 28.674766 \nL 58.999432 28.674766 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_4\">\n    <path clip-path=\"url(#p5b6ae91fee)\" d=\"M 122.408523 239.758125 \nL 173.135795 239.758125 \nL 173.135795 85.738197 \nL 122.408523 85.738197 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_5\">\n    <path clip-path=\"url(#p5b6ae91fee)\" d=\"M 185.817614 239.758125 \nL 236.544886 239.758125 \nL 236.544886 48.402227 \nL 185.817614 48.402227 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_6\">\n    <path clip-path=\"url(#p5b6ae91fee)\" d=\"M 249.226705 239.758125 \nL 299.953977 239.758125 \nL 299.953977 24.583197 \nL 249.226705 24.583197 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"patch_7\">\n    <path clip-path=\"url(#p5b6ae91fee)\" d=\"M 312.635795 239.758125 \nL 363.363068 239.758125 \nL 363.363068 25.934805 \nL 312.635795 25.934805 \nz\n\" style=\"fill:#1f77b4;\"/>\n   </g>\n   <g id=\"matplotlib.axis_1\">\n    <g id=\"xtick_1\">\n     <g id=\"line2d_1\">\n      <defs>\n       <path d=\"M 0 0 \nL 0 3.5 \n\" id=\"m80570c8eec\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"84.363068\" xlink:href=\"#m80570c8eec\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_1\">\n      <!-- 0 -->\n      <g transform=\"translate(81.181818 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 31.78125 66.40625 \nQ 24.171875 66.40625 20.328125 58.90625 \nQ 16.5 51.421875 16.5 36.375 \nQ 16.5 21.390625 20.328125 13.890625 \nQ 24.171875 6.390625 31.78125 6.390625 \nQ 39.453125 6.390625 43.28125 13.890625 \nQ 47.125 21.390625 47.125 36.375 \nQ 47.125 51.421875 43.28125 58.90625 \nQ 39.453125 66.40625 31.78125 66.40625 \nz\nM 31.78125 74.21875 \nQ 44.046875 74.21875 50.515625 64.515625 \nQ 56.984375 54.828125 56.984375 36.375 \nQ 56.984375 17.96875 50.515625 8.265625 \nQ 44.046875 -1.421875 31.78125 -1.421875 \nQ 19.53125 -1.421875 13.0625 8.265625 \nQ 6.59375 17.96875 6.59375 36.375 \nQ 6.59375 54.828125 13.0625 64.515625 \nQ 19.53125 74.21875 31.78125 74.21875 \nz\n\" id=\"DejaVuSans-48\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_2\">\n     <g id=\"line2d_2\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"147.772159\" xlink:href=\"#m80570c8eec\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_2\">\n      <!-- 1 -->\n      <g transform=\"translate(144.590909 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 12.40625 8.296875 \nL 28.515625 8.296875 \nL 28.515625 63.921875 \nL 10.984375 60.40625 \nL 10.984375 69.390625 \nL 28.421875 72.90625 \nL 38.28125 72.90625 \nL 38.28125 8.296875 \nL 54.390625 8.296875 \nL 54.390625 0 \nL 12.40625 0 \nz\n\" id=\"DejaVuSans-49\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-49\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_3\">\n     <g id=\"line2d_3\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"211.18125\" xlink:href=\"#m80570c8eec\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_3\">\n      <!-- 2 -->\n      <g transform=\"translate(208 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 19.1875 8.296875 \nL 53.609375 8.296875 \nL 53.609375 0 \nL 7.328125 0 \nL 7.328125 8.296875 \nQ 12.9375 14.109375 22.625 23.890625 \nQ 32.328125 33.6875 34.8125 36.53125 \nQ 39.546875 41.84375 41.421875 45.53125 \nQ 43.3125 49.21875 43.3125 52.78125 \nQ 43.3125 58.59375 39.234375 62.25 \nQ 35.15625 65.921875 28.609375 65.921875 \nQ 23.96875 65.921875 18.8125 64.3125 \nQ 13.671875 62.703125 7.8125 59.421875 \nL 7.8125 69.390625 \nQ 13.765625 71.78125 18.9375 73 \nQ 24.125 74.21875 28.421875 74.21875 \nQ 39.75 74.21875 46.484375 68.546875 \nQ 53.21875 62.890625 53.21875 53.421875 \nQ 53.21875 48.921875 51.53125 44.890625 \nQ 49.859375 40.875 45.40625 35.40625 \nQ 44.1875 33.984375 37.640625 27.21875 \nQ 31.109375 20.453125 19.1875 8.296875 \nz\n\" id=\"DejaVuSans-50\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_4\">\n     <g id=\"line2d_4\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"274.590341\" xlink:href=\"#m80570c8eec\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_4\">\n      <!-- 3 -->\n      <g transform=\"translate(271.409091 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 40.578125 39.3125 \nQ 47.65625 37.796875 51.625 33 \nQ 55.609375 28.21875 55.609375 21.1875 \nQ 55.609375 10.40625 48.1875 4.484375 \nQ 40.765625 -1.421875 27.09375 -1.421875 \nQ 22.515625 -1.421875 17.65625 -0.515625 \nQ 12.796875 0.390625 7.625 2.203125 \nL 7.625 11.71875 \nQ 11.71875 9.328125 16.59375 8.109375 \nQ 21.484375 6.890625 26.8125 6.890625 \nQ 36.078125 6.890625 40.9375 10.546875 \nQ 45.796875 14.203125 45.796875 21.1875 \nQ 45.796875 27.640625 41.28125 31.265625 \nQ 36.765625 34.90625 28.71875 34.90625 \nL 20.21875 34.90625 \nL 20.21875 43.015625 \nL 29.109375 43.015625 \nQ 36.375 43.015625 40.234375 45.921875 \nQ 44.09375 48.828125 44.09375 54.296875 \nQ 44.09375 59.90625 40.109375 62.90625 \nQ 36.140625 65.921875 28.71875 65.921875 \nQ 24.65625 65.921875 20.015625 65.03125 \nQ 15.375 64.15625 9.8125 62.3125 \nL 9.8125 71.09375 \nQ 15.4375 72.65625 20.34375 73.4375 \nQ 25.25 74.21875 29.59375 74.21875 \nQ 40.828125 74.21875 47.359375 69.109375 \nQ 53.90625 64.015625 53.90625 55.328125 \nQ 53.90625 49.265625 50.4375 45.09375 \nQ 46.96875 40.921875 40.578125 39.3125 \nz\n\" id=\"DejaVuSans-51\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-51\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_5\">\n     <g id=\"line2d_5\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"337.999432\" xlink:href=\"#m80570c8eec\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_5\">\n      <!-- 4 -->\n      <g transform=\"translate(334.818182 254.356562)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 37.796875 64.3125 \nL 12.890625 25.390625 \nL 37.796875 25.390625 \nz\nM 35.203125 72.90625 \nL 47.609375 72.90625 \nL 47.609375 25.390625 \nL 58.015625 25.390625 \nL 58.015625 17.1875 \nL 47.609375 17.1875 \nL 47.609375 0 \nL 37.796875 0 \nL 37.796875 17.1875 \nL 4.890625 17.1875 \nL 4.890625 26.703125 \nz\n\" id=\"DejaVuSans-52\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-52\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"text_6\">\n     <!-- Task -->\n     <g transform=\"translate(200.388281 268.034687)scale(0.1 -0.1)\">\n      <defs>\n       <path d=\"M -0.296875 72.90625 \nL 61.375 72.90625 \nL 61.375 64.59375 \nL 35.5 64.59375 \nL 35.5 0 \nL 25.59375 0 \nL 25.59375 64.59375 \nL -0.296875 64.59375 \nz\n\" id=\"DejaVuSans-84\"/>\n       <path d=\"M 34.28125 27.484375 \nQ 23.390625 27.484375 19.1875 25 \nQ 14.984375 22.515625 14.984375 16.5 \nQ 14.984375 11.71875 18.140625 8.90625 \nQ 21.296875 6.109375 26.703125 6.109375 \nQ 34.1875 6.109375 38.703125 11.40625 \nQ 43.21875 16.703125 43.21875 25.484375 \nL 43.21875 27.484375 \nz\nM 52.203125 31.203125 \nL 52.203125 0 \nL 43.21875 0 \nL 43.21875 8.296875 \nQ 40.140625 3.328125 35.546875 0.953125 \nQ 30.953125 -1.421875 24.3125 -1.421875 \nQ 15.921875 -1.421875 10.953125 3.296875 \nQ 6 8.015625 6 15.921875 \nQ 6 25.140625 12.171875 29.828125 \nQ 18.359375 34.515625 30.609375 34.515625 \nL 43.21875 34.515625 \nL 43.21875 35.40625 \nQ 43.21875 41.609375 39.140625 45 \nQ 35.0625 48.390625 27.6875 48.390625 \nQ 23 48.390625 18.546875 47.265625 \nQ 14.109375 46.140625 10.015625 43.890625 \nL 10.015625 52.203125 \nQ 14.9375 54.109375 19.578125 55.046875 \nQ 24.21875 56 28.609375 56 \nQ 40.484375 56 46.34375 49.84375 \nQ 52.203125 43.703125 52.203125 31.203125 \nz\n\" id=\"DejaVuSans-97\"/>\n       <path d=\"M 44.28125 53.078125 \nL 44.28125 44.578125 \nQ 40.484375 46.53125 36.375 47.5 \nQ 32.28125 48.484375 27.875 48.484375 \nQ 21.1875 48.484375 17.84375 46.4375 \nQ 14.5 44.390625 14.5 40.28125 \nQ 14.5 37.15625 16.890625 35.375 \nQ 19.28125 33.59375 26.515625 31.984375 \nL 29.59375 31.296875 \nQ 39.15625 29.25 43.1875 25.515625 \nQ 47.21875 21.78125 47.21875 15.09375 \nQ 47.21875 7.46875 41.1875 3.015625 \nQ 35.15625 -1.421875 24.609375 -1.421875 \nQ 20.21875 -1.421875 15.453125 -0.5625 \nQ 10.6875 0.296875 5.421875 2 \nL 5.421875 11.28125 \nQ 10.40625 8.6875 15.234375 7.390625 \nQ 20.0625 6.109375 24.8125 6.109375 \nQ 31.15625 6.109375 34.5625 8.28125 \nQ 37.984375 10.453125 37.984375 14.40625 \nQ 37.984375 18.0625 35.515625 20.015625 \nQ 33.0625 21.96875 24.703125 23.78125 \nL 21.578125 24.515625 \nQ 13.234375 26.265625 9.515625 29.90625 \nQ 5.8125 33.546875 5.8125 39.890625 \nQ 5.8125 47.609375 11.28125 51.796875 \nQ 16.75 56 26.8125 56 \nQ 31.78125 56 36.171875 55.265625 \nQ 40.578125 54.546875 44.28125 53.078125 \nz\n\" id=\"DejaVuSans-115\"/>\n       <path d=\"M 9.078125 75.984375 \nL 18.109375 75.984375 \nL 18.109375 31.109375 \nL 44.921875 54.6875 \nL 56.390625 54.6875 \nL 27.390625 29.109375 \nL 57.625 0 \nL 45.90625 0 \nL 18.109375 26.703125 \nL 18.109375 0 \nL 9.078125 0 \nz\n\" id=\"DejaVuSans-107\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-84\"/>\n      <use x=\"44.583984\" xlink:href=\"#DejaVuSans-97\"/>\n      <use x=\"105.863281\" xlink:href=\"#DejaVuSans-115\"/>\n      <use x=\"157.962891\" xlink:href=\"#DejaVuSans-107\"/>\n     </g>\n    </g>\n   </g>\n   <g id=\"matplotlib.axis_2\">\n    <g id=\"ytick_1\">\n     <g id=\"line2d_6\">\n      <defs>\n       <path d=\"M 0 0 \nL -3.5 0 \n\" id=\"m2a0ac35f9d\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m2a0ac35f9d\" y=\"239.758125\"/>\n      </g>\n     </g>\n     <g id=\"text_7\">\n      <!-- 0.0 -->\n      <g transform=\"translate(20.878125 243.557344)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 10.6875 12.40625 \nL 21 12.40625 \nL 21 0 \nL 10.6875 0 \nz\n\" id=\"DejaVuSans-46\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_2\">\n     <g id=\"line2d_7\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m2a0ac35f9d\" y=\"196.270125\"/>\n      </g>\n     </g>\n     <g id=\"text_8\">\n      <!-- 0.2 -->\n      <g transform=\"translate(20.878125 200.069344)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_3\">\n     <g id=\"line2d_8\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m2a0ac35f9d\" y=\"152.782125\"/>\n      </g>\n     </g>\n     <g id=\"text_9\">\n      <!-- 0.4 -->\n      <g transform=\"translate(20.878125 156.581344)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-52\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_4\">\n     <g id=\"line2d_9\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m2a0ac35f9d\" y=\"109.294125\"/>\n      </g>\n     </g>\n     <g id=\"text_10\">\n      <!-- 0.6 -->\n      <g transform=\"translate(20.878125 113.093344)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 33.015625 40.375 \nQ 26.375 40.375 22.484375 35.828125 \nQ 18.609375 31.296875 18.609375 23.390625 \nQ 18.609375 15.53125 22.484375 10.953125 \nQ 26.375 6.390625 33.015625 6.390625 \nQ 39.65625 6.390625 43.53125 10.953125 \nQ 47.40625 15.53125 47.40625 23.390625 \nQ 47.40625 31.296875 43.53125 35.828125 \nQ 39.65625 40.375 33.015625 40.375 \nz\nM 52.59375 71.296875 \nL 52.59375 62.3125 \nQ 48.875 64.0625 45.09375 64.984375 \nQ 41.3125 65.921875 37.59375 65.921875 \nQ 27.828125 65.921875 22.671875 59.328125 \nQ 17.53125 52.734375 16.796875 39.40625 \nQ 19.671875 43.65625 24.015625 45.921875 \nQ 28.375 48.1875 33.59375 48.1875 \nQ 44.578125 48.1875 50.953125 41.515625 \nQ 57.328125 34.859375 57.328125 23.390625 \nQ 57.328125 12.15625 50.6875 5.359375 \nQ 44.046875 -1.421875 33.015625 -1.421875 \nQ 20.359375 -1.421875 13.671875 8.265625 \nQ 6.984375 17.96875 6.984375 36.375 \nQ 6.984375 53.65625 15.1875 63.9375 \nQ 23.390625 74.21875 37.203125 74.21875 \nQ 40.921875 74.21875 44.703125 73.484375 \nQ 48.484375 72.75 52.59375 71.296875 \nz\n\" id=\"DejaVuSans-54\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-54\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_5\">\n     <g id=\"line2d_10\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m2a0ac35f9d\" y=\"65.806125\"/>\n      </g>\n     </g>\n     <g id=\"text_11\">\n      <!-- 0.8 -->\n      <g transform=\"translate(20.878125 69.605344)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 31.78125 34.625 \nQ 24.75 34.625 20.71875 30.859375 \nQ 16.703125 27.09375 16.703125 20.515625 \nQ 16.703125 13.921875 20.71875 10.15625 \nQ 24.75 6.390625 31.78125 6.390625 \nQ 38.8125 6.390625 42.859375 10.171875 \nQ 46.921875 13.96875 46.921875 20.515625 \nQ 46.921875 27.09375 42.890625 30.859375 \nQ 38.875 34.625 31.78125 34.625 \nz\nM 21.921875 38.8125 \nQ 15.578125 40.375 12.03125 44.71875 \nQ 8.5 49.078125 8.5 55.328125 \nQ 8.5 64.0625 14.71875 69.140625 \nQ 20.953125 74.21875 31.78125 74.21875 \nQ 42.671875 74.21875 48.875 69.140625 \nQ 55.078125 64.0625 55.078125 55.328125 \nQ 55.078125 49.078125 51.53125 44.71875 \nQ 48 40.375 41.703125 38.8125 \nQ 48.828125 37.15625 52.796875 32.3125 \nQ 56.78125 27.484375 56.78125 20.515625 \nQ 56.78125 9.90625 50.3125 4.234375 \nQ 43.84375 -1.421875 31.78125 -1.421875 \nQ 19.734375 -1.421875 13.25 4.234375 \nQ 6.78125 9.90625 6.78125 20.515625 \nQ 6.78125 27.484375 10.78125 32.3125 \nQ 14.796875 37.15625 21.921875 38.8125 \nz\nM 18.3125 54.390625 \nQ 18.3125 48.734375 21.84375 45.5625 \nQ 25.390625 42.390625 31.78125 42.390625 \nQ 38.140625 42.390625 41.71875 45.5625 \nQ 45.3125 48.734375 45.3125 54.390625 \nQ 45.3125 60.0625 41.71875 63.234375 \nQ 38.140625 66.40625 31.78125 66.40625 \nQ 25.390625 66.40625 21.84375 63.234375 \nQ 18.3125 60.0625 18.3125 54.390625 \nz\n\" id=\"DejaVuSans-56\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-56\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_6\">\n     <g id=\"line2d_11\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m2a0ac35f9d\" y=\"22.318125\"/>\n      </g>\n     </g>\n     <g id=\"text_12\">\n      <!-- 1.0 -->\n      <g transform=\"translate(20.878125 26.117344)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"text_13\">\n     <!-- Accuracy -->\n     <g transform=\"translate(14.798438 153.86625)rotate(-90)scale(0.1 -0.1)\">\n      <defs>\n       <path d=\"M 34.1875 63.1875 \nL 20.796875 26.90625 \nL 47.609375 26.90625 \nz\nM 28.609375 72.90625 \nL 39.796875 72.90625 \nL 67.578125 0 \nL 57.328125 0 \nL 50.6875 18.703125 \nL 17.828125 18.703125 \nL 11.1875 0 \nL 0.78125 0 \nz\n\" id=\"DejaVuSans-65\"/>\n       <path d=\"M 48.78125 52.59375 \nL 48.78125 44.1875 \nQ 44.96875 46.296875 41.140625 47.34375 \nQ 37.3125 48.390625 33.40625 48.390625 \nQ 24.65625 48.390625 19.8125 42.84375 \nQ 14.984375 37.3125 14.984375 27.296875 \nQ 14.984375 17.28125 19.8125 11.734375 \nQ 24.65625 6.203125 33.40625 6.203125 \nQ 37.3125 6.203125 41.140625 7.25 \nQ 44.96875 8.296875 48.78125 10.40625 \nL 48.78125 2.09375 \nQ 45.015625 0.34375 40.984375 -0.53125 \nQ 36.96875 -1.421875 32.421875 -1.421875 \nQ 20.0625 -1.421875 12.78125 6.34375 \nQ 5.515625 14.109375 5.515625 27.296875 \nQ 5.515625 40.671875 12.859375 48.328125 \nQ 20.21875 56 33.015625 56 \nQ 37.15625 56 41.109375 55.140625 \nQ 45.0625 54.296875 48.78125 52.59375 \nz\n\" id=\"DejaVuSans-99\"/>\n       <path d=\"M 8.5 21.578125 \nL 8.5 54.6875 \nL 17.484375 54.6875 \nL 17.484375 21.921875 \nQ 17.484375 14.15625 20.5 10.265625 \nQ 23.53125 6.390625 29.59375 6.390625 \nQ 36.859375 6.390625 41.078125 11.03125 \nQ 45.3125 15.671875 45.3125 23.6875 \nL 45.3125 54.6875 \nL 54.296875 54.6875 \nL 54.296875 0 \nL 45.3125 0 \nL 45.3125 8.40625 \nQ 42.046875 3.421875 37.71875 1 \nQ 33.40625 -1.421875 27.6875 -1.421875 \nQ 18.265625 -1.421875 13.375 4.4375 \nQ 8.5 10.296875 8.5 21.578125 \nz\nM 31.109375 56 \nz\n\" id=\"DejaVuSans-117\"/>\n       <path d=\"M 41.109375 46.296875 \nQ 39.59375 47.171875 37.8125 47.578125 \nQ 36.03125 48 33.890625 48 \nQ 26.265625 48 22.1875 43.046875 \nQ 18.109375 38.09375 18.109375 28.8125 \nL 18.109375 0 \nL 9.078125 0 \nL 9.078125 54.6875 \nL 18.109375 54.6875 \nL 18.109375 46.1875 \nQ 20.953125 51.171875 25.484375 53.578125 \nQ 30.03125 56 36.53125 56 \nQ 37.453125 56 38.578125 55.875 \nQ 39.703125 55.765625 41.0625 55.515625 \nz\n\" id=\"DejaVuSans-114\"/>\n       <path d=\"M 32.171875 -5.078125 \nQ 28.375 -14.84375 24.75 -17.8125 \nQ 21.140625 -20.796875 15.09375 -20.796875 \nL 7.90625 -20.796875 \nL 7.90625 -13.28125 \nL 13.1875 -13.28125 \nQ 16.890625 -13.28125 18.9375 -11.515625 \nQ 21 -9.765625 23.484375 -3.21875 \nL 25.09375 0.875 \nL 2.984375 54.6875 \nL 12.5 54.6875 \nL 29.59375 11.921875 \nL 46.6875 54.6875 \nL 56.203125 54.6875 \nz\n\" id=\"DejaVuSans-121\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-65\"/>\n      <use x=\"66.658203\" xlink:href=\"#DejaVuSans-99\"/>\n      <use x=\"121.638672\" xlink:href=\"#DejaVuSans-99\"/>\n      <use x=\"176.619141\" xlink:href=\"#DejaVuSans-117\"/>\n      <use x=\"239.998047\" xlink:href=\"#DejaVuSans-114\"/>\n      <use x=\"281.111328\" xlink:href=\"#DejaVuSans-97\"/>\n      <use x=\"342.390625\" xlink:href=\"#DejaVuSans-99\"/>\n      <use x=\"397.371094\" xlink:href=\"#DejaVuSans-121\"/>\n     </g>\n    </g>\n   </g>\n   <g id=\"patch_8\">\n    <path d=\"M 43.78125 239.758125 \nL 43.78125 22.318125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_9\">\n    <path d=\"M 378.58125 239.758125 \nL 378.58125 22.318125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_10\">\n    <path d=\"M 43.78125 239.758125 \nL 378.58125 239.758125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_11\">\n    <path d=\"M 43.78125 22.318125 \nL 378.58125 22.318125 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"text_14\">\n    <!-- 97% -->\n    <g transform=\"translate(73.249787 23.595078)scale(0.1 -0.1)\">\n     <defs>\n      <path d=\"M 10.984375 1.515625 \nL 10.984375 10.5 \nQ 14.703125 8.734375 18.5 7.8125 \nQ 22.3125 6.890625 25.984375 6.890625 \nQ 35.75 6.890625 40.890625 13.453125 \nQ 46.046875 20.015625 46.78125 33.40625 \nQ 43.953125 29.203125 39.59375 26.953125 \nQ 35.25 24.703125 29.984375 24.703125 \nQ 19.046875 24.703125 12.671875 31.3125 \nQ 6.296875 37.9375 6.296875 49.421875 \nQ 6.296875 60.640625 12.9375 67.421875 \nQ 19.578125 74.21875 30.609375 74.21875 \nQ 43.265625 74.21875 49.921875 64.515625 \nQ 56.59375 54.828125 56.59375 36.375 \nQ 56.59375 19.140625 48.40625 8.859375 \nQ 40.234375 -1.421875 26.421875 -1.421875 \nQ 22.703125 -1.421875 18.890625 -0.6875 \nQ 15.09375 0.046875 10.984375 1.515625 \nz\nM 30.609375 32.421875 \nQ 37.25 32.421875 41.125 36.953125 \nQ 45.015625 41.5 45.015625 49.421875 \nQ 45.015625 57.28125 41.125 61.84375 \nQ 37.25 66.40625 30.609375 66.40625 \nQ 23.96875 66.40625 20.09375 61.84375 \nQ 16.21875 57.28125 16.21875 49.421875 \nQ 16.21875 41.5 20.09375 36.953125 \nQ 23.96875 32.421875 30.609375 32.421875 \nz\n\" id=\"DejaVuSans-57\"/>\n      <path d=\"M 8.203125 72.90625 \nL 55.078125 72.90625 \nL 55.078125 68.703125 \nL 28.609375 0 \nL 18.3125 0 \nL 43.21875 64.59375 \nL 8.203125 64.59375 \nz\n\" id=\"DejaVuSans-55\"/>\n      <path d=\"M 72.703125 32.078125 \nQ 68.453125 32.078125 66.03125 28.46875 \nQ 63.625 24.859375 63.625 18.40625 \nQ 63.625 12.0625 66.03125 8.421875 \nQ 68.453125 4.78125 72.703125 4.78125 \nQ 76.859375 4.78125 79.265625 8.421875 \nQ 81.6875 12.0625 81.6875 18.40625 \nQ 81.6875 24.8125 79.265625 28.4375 \nQ 76.859375 32.078125 72.703125 32.078125 \nz\nM 72.703125 38.28125 \nQ 80.421875 38.28125 84.953125 32.90625 \nQ 89.5 27.546875 89.5 18.40625 \nQ 89.5 9.28125 84.9375 3.921875 \nQ 80.375 -1.421875 72.703125 -1.421875 \nQ 64.890625 -1.421875 60.34375 3.921875 \nQ 55.8125 9.28125 55.8125 18.40625 \nQ 55.8125 27.59375 60.375 32.9375 \nQ 64.9375 38.28125 72.703125 38.28125 \nz\nM 22.3125 68.015625 \nQ 18.109375 68.015625 15.6875 64.375 \nQ 13.28125 60.75 13.28125 54.390625 \nQ 13.28125 47.953125 15.671875 44.328125 \nQ 18.0625 40.71875 22.3125 40.71875 \nQ 26.5625 40.71875 28.96875 44.328125 \nQ 31.390625 47.953125 31.390625 54.390625 \nQ 31.390625 60.6875 28.953125 64.34375 \nQ 26.515625 68.015625 22.3125 68.015625 \nz\nM 66.40625 74.21875 \nL 74.21875 74.21875 \nL 28.609375 -1.421875 \nL 20.796875 -1.421875 \nz\nM 22.3125 74.21875 \nQ 30.03125 74.21875 34.609375 68.875 \nQ 39.203125 63.53125 39.203125 54.390625 \nQ 39.203125 45.171875 34.640625 39.84375 \nQ 30.078125 34.515625 22.3125 34.515625 \nQ 14.546875 34.515625 10.03125 39.859375 \nQ 5.515625 45.21875 5.515625 54.390625 \nQ 5.515625 63.484375 10.046875 68.84375 \nQ 14.59375 74.21875 22.3125 74.21875 \nz\n\" id=\"DejaVuSans-37\"/>\n     </defs>\n     <use xlink:href=\"#DejaVuSans-57\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-55\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_15\">\n    <!-- 71% -->\n    <g transform=\"translate(136.658878 80.65851)scale(0.1 -0.1)\">\n     <use xlink:href=\"#DejaVuSans-55\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-49\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_16\">\n    <!-- 88% -->\n    <g transform=\"translate(200.067969 43.32254)scale(0.1 -0.1)\">\n     <use xlink:href=\"#DejaVuSans-56\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-56\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_17\">\n    <!-- 99% -->\n    <g transform=\"translate(263.47706 19.50351)scale(0.1 -0.1)\">\n     <use xlink:href=\"#DejaVuSans-57\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-57\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_18\">\n    <!-- 98% -->\n    <g transform=\"translate(326.886151 20.855117)scale(0.1 -0.1)\">\n     <use xlink:href=\"#DejaVuSans-57\"/>\n     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-56\"/>\n     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-37\"/>\n    </g>\n   </g>\n   <g id=\"text_19\">\n    <!-- Task Accuracy -->\n    <g transform=\"translate(168.929063 16.318125)scale(0.12 -0.12)\">\n     <defs>\n      <path id=\"DejaVuSans-32\"/>\n     </defs>\n     <use xlink:href=\"#DejaVuSans-84\"/>\n     <use x=\"44.583984\" xlink:href=\"#DejaVuSans-97\"/>\n     <use x=\"105.863281\" xlink:href=\"#DejaVuSans-115\"/>\n     <use x=\"157.962891\" xlink:href=\"#DejaVuSans-107\"/>\n     <use x=\"215.873047\" xlink:href=\"#DejaVuSans-32\"/>\n     <use x=\"247.660156\" xlink:href=\"#DejaVuSans-65\"/>\n     <use x=\"314.318359\" xlink:href=\"#DejaVuSans-99\"/>\n     <use x=\"369.298828\" xlink:href=\"#DejaVuSans-99\"/>\n     <use x=\"424.279297\" xlink:href=\"#DejaVuSans-117\"/>\n     <use x=\"487.658203\" xlink:href=\"#DejaVuSans-114\"/>\n     <use x=\"528.771484\" xlink:href=\"#DejaVuSans-97\"/>\n     <use x=\"590.050781\" xlink:href=\"#DejaVuSans-99\"/>\n     <use x=\"645.03125\" xlink:href=\"#DejaVuSans-121\"/>\n    </g>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"p5b6ae91fee\">\n   <rect height=\"217.44\" width=\"334.8\" x=\"43.78125\" y=\"22.318125\"/>\n  </clipPath>\n </defs>\n</svg>\n",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "source": [
    "results.make_plots()\n",
    "improved_results.make_plots()"
   ]
  }
 ]
}